如何使用PHP安全地生成适用于使用AES 256哈希数据的密钥?在PHP中为AES生成密钥256
我试过谷歌搜索,并发现大量有关如何使用PHP加密数据使用AES 256的信息,但所有这些示例使用现有的预生成密钥,我需要在PHP中生成密钥。
如何使用PHP安全地生成适用于使用AES 256哈希数据的密钥?在PHP中为AES生成密钥256
我试过谷歌搜索,并发现大量有关如何使用PHP加密数据使用AES 256的信息,但所有这些示例使用现有的预生成密钥,我需要在PHP中生成密钥。
openssl-pkey-new()
函数正是你正在寻找的。
对于IV,你可以看看How to securely generate an IV for AES CBC Encryption?它建议使用openssl-random-pseudo-bytes
但是,如果你真的找一个有用的页面,谷歌“在PHP中实现AES” - 作为第一主打,你会发现http://www.movable-type.co.uk/scripts/aes-php.html这当然会教你一切你需要知道的......
Erm,它产生一个PK密钥对,而不是一个aes密钥?除非我误解。 –
如果你不想依赖一个库,你可以在Linux/Unix机器上使用这个函数。它与openssl-random-pseudo-bytes
相同:
<?php
$key_size = 256; //For a 256 bit key, you can use 128 or 512 as well.
$key = uuid_gen(($key_size/8)); //8 bits in a byte
echo 'key length is ' .strlen($key) ."\n"; //The number of bytes
/* Returns Raw Binary */
function uuid_gen($length) {
$fp = @fopen('/dev/urandom','rb');
if ($fp !== FALSE) {
$result .= @fread($fp, $length);
@fclose($fp);
} else {
trigger_error('Can not open /dev/urandom.');
}
return $result;
}
您是否尝试过谷歌您的问题?你有没有想出任何有用的东西?密钥是否需要在“php”中生成,或者简单地提供给您。大概你不会重复生成新的密钥 - 或者你会? – Floris
密钥必须在php中生成。我发现什么都没有帮助。 – fibi
我试图谷歌的问题,并找到了这个! –