如何使用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
我試圖谷歌的問題,並找到了這個! –