簡體   English   中英

在PHP中為AES 256生成密鑰

[英]Generate a key in PHP for AES 256

如何使用PHP使用AES 256安全地生成適合散列數據的密鑰?

我嘗試了Googling,發現了大量有關如何使用PHP使用AES 256加密數據的信息,但是所有這些示例都使用了現有的預生成密鑰,而我需要在PHP中生成密鑰。

openssl-pkey-new()函數正是您所需要的。

至於IV,您可以查看如何為AES CBC加密安全地生成IV? 建議使用openssl-random-pseudo-bytes

但是,如果您確實在尋找有用的頁面,可以使用Google“在PHP中實現AES”-首先,您將找到http://www.movable-type.co.uk/scripts/aes-php.html。教你一切你需要知道的...

如果您不想依賴庫,則可以在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;
}

從php7開始,您可以使用random_bytes()函數生成加密安全的偽隨機字節。

用於此功能的隨機性來源如下:

  • 在Windows上,將始終使用»CryptGenRandom()。
  • 在Linux上,如果可用,將使用»getrandom(2)syscall。
  • 在其他平台上,將使用/ dev / urandom。
  • 如果上述來源均不可用,則將引發異常

有關更多信息,請參見php手冊

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM