当从不同的表单提交时,Sha1 从 php 中的同一字符串生成不同的哈希值
所以我有这个非常奇怪的问题。我有一个登录脚本,您输入用户名和密码。密码发布后,我使用 php 函数 sha1() 对其进行 sha1,并将其与数据库中的 sha1 版本进行比较。如果它们匹配,则登录。该部分工作正常。现在,我的移动版本具有相同的功能,但它使用不同的形式和不同的 URL。输入密码后,我会执行所有完全相同的步骤,但发布的 sha1 哈希值与数据库中的 sha1 哈希值不同。我知道我每次输入的值都完全相同,所以我不明白为什么这两个值会不同。这仅适用于某些用户名/密码组合。我错过了什么吗?
So I have this really weird problem. I have a login script and you type in a username and password. Once the password is posted i sha1 it with the php function sha1() and compare that to the sha1 version in the database. If they match it logs in. That part works fine. Now I have the same functionality for a mobile version, but it uses a different form and a different URL. After you type in the password I do all the exact same steps, but the sha1 hash that is posted is different than the sha1 hash in the database. I know I type them in exactly the same each time, so I don't see why the two values would be different. This is only true for some username / password combination. Am I missing something??
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
相同的文本没有理由产生不同的 sha1 值。
我建议您在生成 sha1 之前记录真实的密码值以调试问题。
我怀疑您输入的密码可能大小写不同,或者由于某种原因用空格或其他字符填充。
There is no reason for the same text produce different sha1 values.
I suggest you log the real password values before the sha1 is generated to debug the problem.
I suspect that you may be entering passwords with different case or are padded with spaces or other characters for some reason.
我遇到过这个问题,但无法追踪它。事实证明,如果将输入字符串括在单引号中,会产生与使用双引号不同的结果。
还要注意不同的编码问题
示例
04CDF156D64CC4B51E1DC7E5A852F9177102EBE7
44372F3C82A4AAD84748AE5ECB8F6C7313DA6C65
非常烦人
I ve had this problem and i could not trace it. It turns out that if you enclose the input string in sigle quotes yields different results than with double quotes.
Also watch out for different encoding issues
Example
04CDF156D64CC4B51E1DC7E5A852F9177102EBE7
44372F3C82A4AAD84748AE5ECB8F6C7313DA6C65
Very annoying