我正在尝试生成一个对称密钥,我可以用它在 php 中使用相同的密钥来加密和解密消息。
我已经浏览了下面的 php 文档,但只能找到公钥/私钥生成: http://www.php.net/manual/en/function.openssl-pkey-new.php
关于如何使用这些密钥生成函数来制作对称密钥有什么想法吗?
谢谢, 乔
对称密钥基本上是一组随机字节。如果您想使用
openssl
扩展,请使用 openssl_random_pseudo_bytes()
:
$symetric_key = openssl_random_pseudo_bytes($length);
random_bytes()
(从 PHP 7 开始)或 openssl_random_pseudo_bytes()
。使用 OpenSSL 扩展使用对称密钥加密数据,您可以使用 openssl_cipher_key_length()
来知道所需的密钥长度。
$cipher = "aes-256-gcm";
$plaintext = "Attack at dawn!";
if (in_array($cipher, openssl_get_cipher_methods())) {
$iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length($cipher));
$key = openssl_random_pseudo_bytes(openssl_cipher_key_length($cipher));
$ciphertext = openssl_encrypt($plaintext, $cipher, $key, OPENSSL_RAW_DATA, $iv, $tag);
}