欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

通过截取某字符串散列结果的前n位字符来比较字符串正确性的做法是否妥当?

程序员文章站 2022-03-09 12:05:55
...
当我们存储用户密码的时候当然需要保存完整的散列结果,但有时候这个散列结果很长,在有些情况下显得很臃肿。比如我想写一个简单的cookie防伪造程序,思路是先将cookie原始值进行mcrypt可逆加密,再将值拼上salt计算sha256并截取sha256结果的前10位接在最终cookie值的后面。验证时只需要将cookie值拆开,解密前一段字符,并计算sha256取前10位与后面的值进行比较。这样的做法是否安全?

回复内容:

当我们存储用户密码的时候当然需要保存完整的散列结果,但有时候这个散列结果很长,在有些情况下显得很臃肿。比如我想写一个简单的cookie防伪造程序,思路是先将cookie原始值进行mcrypt可逆加密,再将值拼上salt计算sha256并截取sha256结果的前10位接在最终cookie值的后面。验证时只需要将cookie值拆开,解密前一段字符,并计算sha256取前10位与后面的值进行比较。这样的做法是否安全?

密码的hash值不应该放在cookie中,你可以另外生成token来验证登录。

这种做法还是很常见的, 16位的md5就是先计算出32位然后截取中间16位来实现的.当然,太短了要小心被暴力破解.