在php中生成对称密钥

问题描述 投票:0回答:2

我正在尝试生成一个对称密钥,我可以用它在 php 中使用相同的密钥来加密和解密消息。

我已经浏览了下面的 php 文档,但只能找到公钥/私钥生成: http://www.php.net/manual/en/function.openssl-pkey-new.php

关于如何使用这些密钥生成函数来制作对称密钥有什么想法吗?

谢谢, 乔

php cryptography encryption-symmetric symmetric-key
2个回答
1
投票

对称密钥基本上是一组随机字节。如果您想使用

openssl
扩展,请使用
openssl_random_pseudo_bytes()
:

$symetric_key = openssl_random_pseudo_bytes($length);

0
投票

要生成对称密钥,您可以使用

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);
}
© www.soinside.com 2019 - 2024. All rights reserved.