使用crypt进行不同的加密。盐应该是什么格式等

时间:2012-04-13 22:29:47

标签: php encryption hash salt crypt

我正在构建用于开发的类,并且正在开发加密类。我一直在阅读php的crypt函数和不同的加密类型,但有些领域已经模糊地解释过了。

我的理解是这些加密选项CRYPT_STD_DESCRYPT_EXT_DESCRYPT_MD5CRYPT_BLOWFISHCRYPT_SHA256CRYPT_SHA512。要查看它们是否已启用,您只需检查

if(CRYPT_FOO==1)
{
   //is enabled
}

问题

除了以外的其他加密的盐要求/格式是什么? 关于SO的blowfish要求。

只是为了澄清我假设你使用带有crypt()的河豚盐自动进行河豚加密?

1 个答案:

答案 0 :(得分:3)

official documentation of the crypt function有很多关于各种模式的信息,以及应该作为salt参数传递的内容:

  • CRYPT_STD_DES:字母./0-9A-Za-z中的两个字符盐,即12位盐。
  • CRYPT_EXT_DES:一个_字符,然后一个4字符的迭代计数,然后一个4字符的盐(每个使用相同的字母)。
  • CRYPT_MD5:标记$1$,然后是9个盐字符(我猜想使用与上面相同的字母)。
  • CRYPT_BLOWFISH:标记$2a$,然后是一个两位数的 cost 参数,范围为04到31(意味着2 4 到2 < sup> 31 迭代),然后$和22位盐(再次使用与上面相同的字母表)。
  • CRYPT_SHA256:标记$5$,可选的圆形参数指示rounds= 数字 $(十进制数介于1000和999999999之间) )和一个16个字符的盐(使用与上面相同的字母)。
  • CRYPT_SHA512:标记$6$,可选的圆形参数指示rounds= 数字 $(十进制数介于1000和999999999之间) )和一个16个字符的盐(使用与上面相同的字母)。

salt参数的开头唯一标识在这里使用哪种密码哈希算法 - 所以是的,如果你使用bcrypt格式的盐(以$ 2a $开头),它将自动使用bcrypt。 / p>