小编vmc*_*cie的帖子

openssl随机伪字节和bin2hex具有小写字符

几乎没有相关的问题......它是关于在加密中使用的密钥.使用PHP/openssl为AES-CBC-256生成32字节密钥(256位),以便在openssl_encrypt函数中使用.

据我所知,我可以使用以下php函数创建一个32字节的字符串:

$key = openssl_random_pseudo_bytes(32, true);
Run Code Online (Sandbox Code Playgroud)
  1. 第一个问题,它会输出奇怪的字符(我的字符串utf8),这些奇怪的字符是否正确?是有效使用的关键?

    示例输出: O?3sa??TX|~?!?Q8?]M?r??{??????

    如果我将每个字符转换为二进制数字,我得到:

    01001111 10110001 00110011 01110011 01100001 10111111 11011101 01010100
    01011000 01111100 01111110 11101010 00100001 10001011 01010001 00001110
    00111000 10111101 01011101 01001101 10100000 01110010 10101001 11001100
    01111011 10110001 11010011 11110001 00111111 00000110 11000110 11001011
    
    Run Code Online (Sandbox Code Playgroud)

    所以它似乎是正确的,我有32x8位= 256位密钥...

  2. 第二个问题,是密钥应该被剔除的原因之一,因为它可以输出未知的字符......这种方式使它更具可读性,也用于存储?

    $ key_hex = bin2hex($ key);

    输出: 4fb1337361bfdd54587c7eea218b510e38bd5d4da072a9cc7bb1d3f13f06c6cb

  3. 第三个问题,如果我读到HEX它说,它仅包含0-9A-F,为何会出现在小写字符bin2hex以上(PHP)的输出?

  4. 这样做是否安全,strtoupper()所有人都应该得到大写字符?

    如果我从原始键中获取第二个字符(未知的那个),即十六进制的b1(B1),即二进制位: 10110001

    如果我在这个网站上查阅:http://dev.networkerror.org/utf8/?start = 0&end = 400&sol = 4&search =&show_uni_int = on&show_uni_hex …

key aes

1
推荐指数
1
解决办法
1836
查看次数

标签 统计

aes ×1

key ×1