2012-04-13 45 views
1

我正在构建我的开发类,并且正在开发一个加密类。我一直在阅读php的crypt函数和不同的加密类型,但几个地方已经模糊地解释。与crypt的不同加密。盐应该是什么格式等

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

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

问题

什么是比其他的不同的加密盐的要求/格式。 blowfish对SO的要求。

只是为了澄清,我假设如果你使用与crypt()河豚盐它会自动做河豚加密?

+0

可能重复的[PHP crypt和盐 - 更多的澄清请](http://stackoverflow.com/questions/2192354/php-crypt-and-salt-more-clarification-please) – 2012-04-13 22:34:33

+0

如果你试图加密密码,只需使用bcrypt,这是最安全的,你可以拥有。 HTTP://计算器。com/questions/4795385/how-do-you-use-bcrypt-for-hashing-passwords-in-php – aledalgrande 2012-04-13 22:42:46

+0

@KenWhite这些问题解释了我所问的一些问题。他们正在使用16位加密的河豚。我不确定对诸如'sha256'等各种加密类型的盐的要求是什么。 – Yamiko 2012-04-14 00:46:42

回答

3

official documentation of the crypt function介绍了各种模式的相当长的一段信息,以及什么应该作为他们salt参数传递:

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

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

相关问题