2012-06-06 43 views
0

我想解除在我们的openldap环境中SSHA加密的userPassword。我不想要纯文本密码,但希望获得未加密的哈希密码。OpenLDAP Unsalt PHP中的SSHA用户密码

有什么想法?即使是散列和腌制的方法也是有用的。

+0

http://www.php.net/manual/en/function.sha1.php#104232? – DaveRandom

+1

或'function checkSSHAPass($ plainTextPass,$ ldapPass){if(strtoupper(substr($ ldapPass,0,6))!='{SSHA}')return FALSE; $ passStr = base64_decode(substr($ ldapPass,6)); return substr($ passStr,0,20)== sha1($ plainTextPass.substr($ passStr,20),TRUE); ''? – DaveRandom

+0

@DaveRandom就是这样!出于好奇,你是否发现或自己编码?我搜索了一段时间,没有遇到任何东西。谢谢:) –

回答

4

你想以某种方式转换

salt + sha1(salt + password) 

sha1(password) 

我看不出这有可能不知道明文密码。如果可能的话,腌制本身将是一种无用而且微不足道的可逆技术。

+0

这绝对是盐+沙1(盐+通)?我也见过sha1(传球+盐)+盐。我也会尝试这种方式。 我正在接受输入并比较输入的哈希与存储的用户密码。这比认证更深一点,否则我只是测试绑定。 –

+0

我在描述抽象的过程,看来OpenLDAP中的实际算法是'{SSHA}'+ base64(sha1(密码+盐))+ salt'。 – lanzz