【问题标题】:different encryptions with crypt. what format should the salt be etc使用 crypt 进行不同的加密。盐应该是什么格式等
【发布时间】:2012-04-26 07:23:11
【问题描述】:

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

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

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

问题

除了 . blowfish SO 上的要求。

为了澄清,我假设如果您使用带有crypt() 的河豚盐,它会自动进行河豚加密?

【问题讨论】:

  • 如果您尝试加密密码,只需使用 bcrypt,它是您可以拥有的最安全的方法。 stackoverflow.com/questions/4795385/…
  • @KenWhite 这些问题解释了我在问什么。他们使用的是 16 位加密的河豚。我不确定各种加密类型的盐的要求是什么,例如sha256
  • @aledalgrande 作为我的密码,我将使用 bcrypt,即CRYPT_BLOWFISH,但我的班级也将支持其他加密。

标签: php encryption hash salt crypt


【解决方案1】:

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$,然后是 04 到 31 范围内的两位数 cost 参数(表示 24 到 231迭代),然后是$ 和一个 22 位的盐(同样,使用与上述相同的字母表)。
  • CRYPT_SHA256:标记 $5$,可选的圆形参数指示 rounds=number$(十进制数介于 1000 和 999999999 之间),以及 16 个字符的盐(使用与上面相同的字母)。
  • CRYPT_SHA512:标记 $6$,可选的圆形参数指示 rounds=number$(十进制数介于 1000 和 999999999 之间),以及 16 个字符的盐(使用与上面相同的字母)。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-07
    • 1970-01-01
    • 1970-01-01
    • 2016-05-20
    • 2013-12-20
    • 2012-08-13
    • 1970-01-01
    • 2011-01-14
    相关资源
    最近更新 更多