Uploaded image for project: 'Commons Codec'
  1. Commons Codec
  2. CODEC-133

Add classes for MD5/SHA1/SHA-512-based Unix crypt(3) hash variants.

    XMLWordPrintableJSON

Details

    Description

      The Linux libc6 crypt(3) function, which is used to generate e.g. the password hashes in /etc/shadow, is available in nearly all other programming languages (Perl, PHP, Python, C, C++, ...) and databases like MySQL and offers MD5/SHA1/SHA-512 based algorithms that were improved by adding a salt and several iterations to make rainbow table attacks harder. Thus they are widely used to store user passwords.

      Java, though, has due it's platform independence, no direct access to the libc functions and still lacks an proper port of the crypt(3) function.

      I already filed a wishlist bug (CODEC-104) for the traditional 56-bit DES based crypt(3) method but would also like to see the much stronger algorithms.
      There are other bug reports like DIRSTUDIO-738 that demand those crypt variants for some specific applications so there it would benefit other Apache projects as well.

      Java ports of most of the specific crypt variants are already existing, but they would have to be cleaned up, properly tested and license checked:
      ftp://ftp.arlut.utexas.edu/pub/java_hashes/

      I would be willing to help here by cleaning the source code and writing unit tests etc. but I'd like to generally know if you are interested and if there's someone who can do a code review (it's security relevant after all and I'm no crypto guy)

      bye,

      christian

      Attachments

        1. crypt3-with-utexas-licence.diff
          140 kB
          Christian Brunotte
        2. commons-codec-crypt3.diff
          106 kB
          Christian Brunotte

        Activity

          People

            Unassigned Unassigned
            lathspell Christian Brunotte
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: