我需要在运行 PHP 引擎版本 5.4.34 的共享虚拟主机帐户上运行以下命令。(即我无法安装任何 3rd 方库。)
问问题
3136 次
1 回答
0
如果没有安装 OpenSSL,那么除了在 Web 上寻找一个普通的 PHP 实现之外没有其他方法。
如果安装了,可以查看openssl_get_cipher_methods()
安装的版本是否支持GCM。像这样使用它:
$strong;
$iv = openssl_random_pseudo_bytes(12, $strong);
if (!$strong) {
exit(1);
}
$key = openssl_random_pseudo_bytes(12, $strong);
if (!$strong) {
exit(1);
}
$data = "some string";
$ciphertext = openssl_encrypt($data, "aes-128-gcm", $key, 0, $iv);
$decrypted = openssl_decrypt($ciphertext, "aes-128-gcm", $key, 0, $iv);
var_dump($data == $decrypted);
感谢 Scott Arciszewski 在评论中指出这对于 PHP < 7.1 根本不起作用,因为在加密期间无法检索身份验证标签,因此如果没有它,解密将始终失败。
如果安装了 mcrypt,你可以通过 来检查 GCM 是否可用mcrypt_list_modes
,但我非常怀疑。
于 2015-02-03T09:19:01.773 回答