良好的加密哈希函数

Sna*_*SWE 8 php passwords hash crypt

可能重复:
PHP密码的安全散列和盐

我正在建立一个网站,我需要一个安全的算法来存储密码.我第一次想到bcrypt,但后来发现我的主机不支持它,我无法更改主机.

我的主机允许这种加密:

  • 标准DES

而这些哈希:

  • MD5
  • md2,md4和md5
  • sha1,sha256,sha384&sha512
  • ripemd128,ripemd160,ripemd256和ripemd360
  • 涡流
  • tiger128,3,tiger160,3,tiger192,3,tiger128,4,tiger160,4&tiger192,4
  • snefru
  • GOST
  • 的Adler32
  • crc32和crc32b
  • haval128,3,haval160,3,haval192,3,haval224,3,haval256,3,haval128,4,haval160,4,haval192,4,haval224,3,haval256,4,haval128,5,haval160,5,haval192, 5,haval224,5&haval256,5

那么,你们中的任何人都能用这个和一个盐来修复一个好的算法吗?

phi*_*hag 8

您根本不应存储加密(甚至未加密)的密码.相反,使用盐渍哈希(拉伸,例如用PBKDF2),优选SHA2-512.

作为参考,这里是列出的哈希的分类(详见维基百科):

加密(不是散列函数):DES
非加密校验和(可笑):adler32,crc32,crc32b
破坏:MD2,MD4,MD5,SHA1
可能破坏:Tiger,snefru,GOST,HAVAL*
可能安全:SHA2-256/384/512,RIPEMD-128/256,RIPEMD-160/320,WHIRLPOOL

请注意,强度是指查找与已知哈希(preimage attack)匹配的任何密码的攻击.此外,上述排序是偏执的,立即丢弃任何已知漏洞的哈希.

  • @hanshenrik [这篇论文](https://www.cosic.esat.kuleuven.be/publications/article-1138.pdf) 包括复杂度为 2^47 的 16 轮缩减 Tiger 的完整碰撞,以及一个伪-与复杂度为 2^47 的完整 24 轮 Tiger 碰撞。这并不意味着 Tiger 在 SHA-1 级别(基本上每个人都可以进行原像攻击)被破坏,但我对这些安全裕度感到不舒服。不过,我对我误解某些事情的可能性持开放态度。 (2认同)