我有专有的networking应用程序,以sha1 $ 79b2c $ b3704ec5703ef28ded379cf6c6de4c4160aa029b的forms存储用户密码。 这是一个盐腌sha1哈希。
我也想用freeradius这个预设的信息。 Crypt-Password属性在半径中定义,但AFAIK只是密码的md5散列。 我试过这个,但是这没有按照我的预期工作。 我怎样才能使用相同的ceredentials在freeradiusvalidation用户? 是否可以运行一些脚本并接受其返回值?
如果我更改专有Web应用程序以保存另一个表单上的用户信用,我应该select与Freeradius兼容吗? 除了Cleartext和MD5。
我已经find了如何做的问题部分B:
表单sha1 $ 79b2c $ b3704ec5703ef28ded379cf6c6de4c4160aa029b包含以下部分:sha1 $ SALT $ SALTEDPASSWORD
在半径,这被命名为SSHA密码参考: http : //www.packtpub.com/article/freeradius-authentication-storing-passwords参考: http ://freeradius.org/radiusd/man/rlm_pap.txt
1-使用Ref1中的脚本创build一个Salted SHA1散列。 prop-to-ssha.pl UserClearPass SALT
这个输出可以被认为是属性
SSHA密码:= OUTPUTOFPERLSCRIPT
这工作。 我可以自动化我的专有应用程序,并创build用户时创build一个半径密码input。
对于问题的第一部分,我还没有答案。
这在Java中工作
// Salted SHA1 with a random salt appended String salt = UUID.randomUUID().toString().replaceAll("-", ""); hashPass = Base64.encodeBase64String(ArrayUtils.addAll( DigestUtils.sha1(currPass.concat(salt)), salt.getBytes()));
你现在可以用'SSHA-Password'属性在RadCheck表中添加'hashPass'。 Base64和DigestUtils来自Apache Commons。