Php openssl_加密(…字符串$method…)语法

Php openssl_加密(…字符串$method…)语法,php,encryption,openssl,php-openssl,Php,Encryption,Openssl,Php Openssl,我在这里或谷歌上都找不到这方面的信息,所以很快就会问:当使用openssl\u encrypt时,我应该使用实际的密码名称(即“bf cbc”),还是可以使用别名(即“blowfish”) FWIW,我使用的是PHP5.6.34 附加问题:根据PHP文档,有些方法已经被证明是弱的,那么在剩下的方法中,哪一个是最强的,或者哪一个是最强的?不要使用别名,请尽可能具体地使用您想要使用的密码 AES可能是这里使用的最合适的算法。您使用的模式也很重要。考虑到这一点,我将优先考虑以下事项: aes-*-g

我在这里或谷歌上都找不到这方面的信息,所以很快就会问:当使用
openssl\u encrypt
时,我应该使用实际的密码名称(即
“bf cbc”
),还是可以使用别名(即
“blowfish”

FWIW,我使用的是PHP5.6.34


附加问题:根据PHP文档,有些方法已经被证明是弱的,那么在剩下的方法中,哪一个是最强的,或者哪一个是最强的?

不要使用别名,请尽可能具体地使用您想要使用的密码

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

  • aes-*-gcm
  • aes-*-ctr
  • aes-*-cbc
其中*显然是
256/192/128
中的一个。请记住,上述每种模式都有不同的安全要求。GCM需要一个96位的nonce,并且不需要额外的身份验证。CTR通常使用128位nonce,并且需要MAC来确保安全。在GCM或CTR模式下,对两条不同的消息使用相同的nonce和key将暴露明文,因此永远不要这样做。CBC需要128位IV和MAC才能保证安全


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

。可用的密码取决于机器上安装的openssl。@Peter好的,我不知道可用的密码取决于机器上安装的openssl,但这不是重点/问题不,不是。openssl\u get\u cipher\u methods()返回您可以使用的所有有效字符串。@Peter您不理解我的问题。如果您已经阅读了PHP文档,那么当您运行
openssl\u get\u cipher\u methods(TRUE)
语句时,它会返回一个别名列表。我的问题是,在执行
openssl\u encrypt()
函数时,我是否应该或可以使用密码的别名和/或实际名称。。。我觉得我最初的问题很直截了当…谢谢!非常感谢你的信息。此外,出于好奇,是否可以使用别名?在不需要身份验证的情况下,可以使用别名进行加密。还有一些用途是,身份验证可能是不需要的。