当前位置: 首页 > 知识库问答 >
问题:

在PHP中为AES 256生成密钥

贲高寒
2023-03-14

如何使用PHP安全地生成适用于AES 256哈希数据的密钥?

我尝试过谷歌搜索,找到了大量关于如何使用PHP使用AES 256加密数据的信息,但是所有这些示例都使用了现有的预生成密钥,而我需要在PHP中生成密钥。

共有3个答案

颜乐
2023-03-14

如果不想依赖库,可以在Linux/Unix机器上使用此函数。它与openssl随机伪字节相同:

<?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;
}
胥英奕
2023-03-14

从php7开始,您可以使用random_bytes()函数生成加密安全的伪随机字节

用于该函数的随机性来源如下:

  • 在Windows上,将始终使用»CryptGenRandom()

有关更多信息,请参阅php手册

范修伟
2023-03-14

openssl-pkey-new()函数正是您想要的。

至于IV,您可以查看如何安全地为AES CBC加密生成IV?它建议使用openssl-随机-伪字节

但是如果你真的在寻找一个有用的页面,谷歌“在PHP中实现AES”——这是你第一次找到它http://www.movable-type.co.uk/scripts/aes-php.html这肯定会教会你所有你需要知道的。。。

 类似资料:
  • 问题内容: 我有一些需要解密的加密文本。它使用AES-256-CBC加密。我有加密的文本,密钥和iv。但是,无论我尝试什么,我似乎都无法正常工作。 互联网建议mcrypt的Rijndael密码应该能够做到这一点,所以这就是我现在所拥有的: 目前,我收到2条警告,并且输出乱码: 任何帮助,将不胜感激。 问题答案: 我并不十分熟悉的东西,但它似乎是试图替代将是一个明显的下一个步骤… 编辑: 您是对的,

  • 问题内容: 我正在尝试在php中生成一个随机密码。 但是我得到所有的’a’s,返回类型是数组类型,我希望它是一个字符串。有关如何更正代码的任何想法? 谢谢。 问题答案: 安全警告 :不是加密安全的伪随机数生成器。寻找其他地方以在PHP中生成加密安全的伪随机字符串。 试试这个(使用代替,因为在字符串上总是):

  • 我用PHP OpenSSL生成了一个SSH密钥: 这导致$pem如下所示: 但是我无法使用此密钥进行身份验证。在使用它之前,我必须使用以下命令转换它: 转换的结果如下: 两者都是PEM格式,但第二个是RSA私钥。使用第二个,PHP可以登录。所以我需要一个以开头的密钥,而不仅仅是。如何使用PHP和OpenSSL PHP实现创建它?

  • 本文向大家介绍PHP实现AES256加密算法实例,包括了PHP实现AES256加密算法实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP实现AES256加密算法的方法,是较为常见的一种加密算法。分享给大家供大家参考。具体如下: aes.class.php文件如下: aesctr.class.php文件如下: Demo实例程序如下: 这里再介绍另一使用 PHP mcrypt 加解密方

  • 我工作在AES256能够加密/解密之间的iOS和PHP使用不安全的渠道。 我见过许多类似的问题,围绕着密钥大小、模式(CBC或ECB)、随机iv的使用等。但是在这种情况下,我发现了以下奇怪的行为。 两种环境中的配置:-键:32字节(256位)-块大小:128位(标准)-iv:16字节(用于测试的静态)-模式:CBC 如果我加密一个16或32字节的文本(以匹配AES块大小),Swift和PHP中的结

  • 我在PHP上使用aes-256-cbc模式加密了一些值,如下所示: 然后我试着在PHP上解密,结果很好: 所以我是JavaScript新手,我不知道如何实现与php相同的解密方法。 加密字符串及其密钥示例: 加密字符串< code > luimppajich/e 44 mwkr 0 q 9 xdyjh 5 q 8 zej hi 8 etax 5 brl 78 vsyh wdknmbga 1 l 8