openssl_encrypt(... string $ method ...)语法

时间:2018-04-01 20:54:42

标签: php encryption openssl php-openssl

我无法在此处或Google上的任何地方找到此信息,因此请快速提问:使用openssl_encrypt时,我应该使用实际的密码名称(即"bf-cbc")还是我可以使用别名(即"blowfish")?

FWIW,我使用PHP 5.6.34。

奖金问题:根据PHP文档,一些方法已被证明是弱的,那么哪一种方法最强,哪种方法最强?

1 个答案:

答案 0 :(得分:3)

不要使用别名,尽可能使用您打算使用的密码。

AES可能是最合适的算法。您使用的模式也很重要。考虑到这一点,我将按顺序优先考虑以下事项:

  • aes-*-gcm
  • aes-*-ctr
  • aes-*-cbc

其中*显然是256/192/128之一。请记住,上述每种模式都有不同的安全要求。 GCM需要一个96位的随机数,而不需要额外的身份验证。 CTR通常使用128位随机数并且需要MAC才是安全的。在GCM或CTR模式下对两个不同的消息使用相同的随机数和密钥将显示明文,因此不会这样做。 CBC需要128位IV和MAC才能保证安全。

我建议您查看this repository中的代码,以获取PHP中的安全加密示例。