On 10/8/10 3:43 PM, Jason Russler wrote:


So if you currently have
$1$PzZV2WYK$Asd3JtTFOwR3JnNTPjxDq/
in /etc/shadow, you can try
{MD5}PzZV2WYK$Asd3JtTFOwR3JnNTPjxDq/

As your example hash is salted, it should be:
{SMD5}PzZV2WYK$Asd3JtTFOwR3JnNTPjxDq/

This isn't going to work. I think Apache DS uses a different sized salt for SMD5 than a typical shadow file - either that or a larger resultant hash value. Ah, well, I suppose I can use the "migrate" feature of the pam_ldap module. Too bad, Apache DS appears to be a lot easier to deal with (in every other respect) than the other LDAP systems I've dealt with. I've very new to it....

FYI, we are using the Java MessageDiggest class to encode the password in Studio, and we assume in the server that the salt is 8 bytes long :

...
        int algoLength = encryptionMethod.algorithm.getName().length() + 2;
...
            case HASH_METHOD_SMD5:
                try
                {
                    // The password is associated with a salt. Decompose it
                    // in two parts, after having decoded the password.
// The salt will be stored into the EncryptionMethod structure // The salt is at the end of the credentials, and is 8 bytes long byte[] passwordAndSalt = Base64.decode( new String( credentials, algoLength, credentials.length
                        - algoLength, "UTF-8" ).toCharArray() );

                    int saltLength = passwordAndSalt.length - MD5_LENGTH;
                    encryptionMethod.salt = new byte[saltLength];
                    byte[] password = new byte[MD5_LENGTH];
split( passwordAndSalt, 0, password, encryptionMethod.salt );

                    return password;
                }

Here, algoLength is the length for the string "{SMD5}" or whatever algorithm you used.

However, you should *not* use MD5 as it's considered broken...

--
Regards,
Cordialement,
Emmanuel Lécharny
www.iktek.com

Reply via email to