我无法在此处或Google上的任何地方找到此信息,因此请快速提问:使用openssl_encrypt
时,我应该使用实际的密码名称(即"bf-cbc"
)还是我可以使用别名(即"blowfish"
)?
FWIW,我使用PHP 5.6.34。
奖金问题:根据PHP文档,一些方法已被证明是弱的,那么哪一种方法最强,哪种方法最强?
答案 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中的安全加密示例。