没有几个问题与彼此有关,…它是关于在加密中使用的密钥。用PHP/openssl为AES-CBC-256生成一个32字节密钥(256位),用于openssl_encrypt函数。
据我所知,我可以使用以下php函数创建一个32字节字符串:
$key = openssl_random_pseudo_bytes(32, true);O�3sa��TX|~�!�Q8�]M�r��{���?��
如果我将每个字符转换为二进制数字,就会得到:
01001111 10110001 00110011 01110011 01100001 10111111 11011101 010100 01011000 011110 011110 111010 0001 100011 01010001 0010010 0010 0011 1011 01010 0010 0011 1010 0101 011101 011101 1010010 1010 10010 1010 1001 11001100 01111011 10110001 11010011 11110011 11110011 11110001 111000111111 00110 110011 00110 11000110011
所以这似乎是正确的,我得到32x8位= 256位键…4fb1337361bfdd54587c7eea218b510e38bd5d4da072a9cc7bb1d3f13f06c6cb0-9和A-F,为什么在上面的bin2hex (php)输出中看到小写字符?strtoupper(),以便所有的人都能按其应有的方式获得大写字符?
如果从原始键(以十六进制表示的b1 (B1) )取第二个字符(未知字符),即二进制位:10110001
如果我在这个网站上查到:bin=on
我确实为B1找到了1011 0001,但似乎是包含两个或更多字节的字符的一部分.也许这就是我把它视为一个不知名角色的原因吗?因为它只是一个随机的8位..。
也许我在这里遗漏了几个拼图来得到整体的画面..。但我认为一般来说,关键应该是好的,它可以被六角化和超感知,也可以在openssl_encrypt中使用。
但我只想确定,我没有犯任何错误,这就是为什么我要在这里张贴这个……如果有人能证实这一点。谢谢
发布于 2014-05-19 14:20:07
( 1)和2)根据PHP manual,这确实是使用此函数的正确方式。您将注意到,在本例中,bin2hex用于使字符串可读性。
3)两者都是有效的,大写字母和小写字母在十六进制表示法中没有区别。通常,以十六进制为输入的程序将同时接受两者,但是.
4) .如果您有一个程序,坚持字母大写,使用strtoupper将工作。
https://stackoverflow.com/questions/23740825
复制相似问题