我正在创建一个“更改密码”表单,用户需要先输入以前的密码,然后输入新密码(两次)。
我应该将输入的“先前密码”与已存储的密码进行比较。
我的Web应用程序使用LDAP服务器来存储用户凭据。密码显然是使用SHA存储的。
所以我做的是获取用户输入的先前密码,使用SHA1消化它,然后进行比较。
String oldPass = request.getParameter("oldpass");
String enteredOldPass= App.getInstance().getCipher().cipher(oldPass);
String ldapPassword= ctx.get("userpassword");
但这不起作用,因为密码不同。当我在LDAP中存储“test”时,我在调用{sha}qUqP5cyxm6YcTAhz05Hph5gvu9M=
时获得.get("userPassword")
,而当我自己进行“测试”时,我得到a94a8fe5ccb19ba61c4c0873d391e987982fbbd3
。
我在这里做错了什么?似乎缺少一步,因为我的结果纯粹是十六进制,而我从LDAP获得的是ASCII。但我尝试将字符串转换为十六进制(使用字符串到十六进制在线转换器),但结果仍然是不同的。
答案 0 :(得分:2)
你不做这些事。
答案 1 :(得分:-1)
您必须转换为二进制,然后转换为base64。试试这个:
<div id="DbyNtAQyGs" class="videos">
<a href="#"><img src="" width="212" height="124" /></a>
</div>
结果将是a94a8fe5ccb19ba61c4c0873d391e987982fbbd3
echo -n "test" | sha1sum | awk '{print $1}' <br>
结果将是qUqP5cyxm6YcTAhz05Hph5gvu9M =