1

我正在构建我的开发课程,并且正在研究加密课程。我一直在阅读 php 的 crypt 函数和不同的加密类型,但有一些地方被模糊地解释了。

我的理解是有这些加密选项CRYPT_STD_DES, CRYPT_EXT_DES, CRYPT_MD5, CRYPT_BLOWFISH,CRYPT_SHA256CRYPT_SHA512. 要查看它们是否已启用,您只需检查

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

问题

不同加密的盐要求/格式是什么? SO上的河豚要求。

为了澄清起见,我假设如果您使用河豚盐crypt()会自动进行河豚加密吗?

4

1 回答 1

3

函数的官方文档crypt有很多关于各种模式的信息,以及应该作为salt参数传递的内容:

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

salt 参数的开头唯一标识了此处要使用哪种密码哈希算法 - 所以是的,如果您使用 bcrypt 格式的 salt(以 $2a$ 开头),它将自动使用 bcrypt。

于 2012-04-15T12:42:44.953 回答