首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >openssl随机伪字节和具有小写字符的bin2hex

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

Stack Overflow用户
提问于 2014-05-19 14:07:49
回答 1查看 2.6K关注 0票数 1

没有几个问题与彼此有关,…它是关于在加密中使用的密钥。用PHP/openssl为AES-CBC-256生成一个32字节密钥(256位),用于openssl_encrypt函数。

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

代码语言:javascript
复制
$key = openssl_random_pseudo_bytes(32, true);
  1. 第一个问题,它会输出奇怪的字符(我的字符集utf8),这些奇怪字符的关键是正确的吗?密钥是否有效使用? 输出示例: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位键…
  2. 第二个问题,这是为什么键应该是十六进制的原因之一,因为它可以输出未知的字符…。这样可以提高它的可读性,也可以存储? $key_hex = bin2hex($key); 输出:4fb1337361bfdd54587c7eea218b510e38bd5d4da072a9cc7bb1d3f13f06c6cb
  3. 第三个问题,如果我读到关于HEX的文章,它说它只包含0-9A-F,为什么在上面的bin2hex (php)输出中看到小写字符?
  4. 那么,是否可以安全地执行strtoupper(),以便所有的人都能按其应有的方式获得大写字符? 如果从原始键(以十六进制表示的b1 (B1) )取第二个字符(未知字符),即二进制位:10110001 如果我在这个网站上查到:bin=on 我确实为B1找到了1011 0001,但似乎是包含两个或更多字节的字符的一部分.也许这就是我把它视为一个不知名角色的原因吗?因为它只是一个随机的8位..。 也许我在这里遗漏了几个拼图来得到整体的画面..。但我认为一般来说,关键应该是好的,它可以被六角化和超感知,也可以在openssl_encrypt中使用。 但我只想确定,我没有犯任何错误,这就是为什么我要在这里张贴这个……如果有人能证实这一点。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-19 14:20:07

( 1)和2)根据PHP manual,这确实是使用此函数的正确方式。您将注意到,在本例中,bin2hex用于使字符串可读性。

3)两者都是有效的,大写字母和小写字母在十六进制表示法中没有区别。通常,以十六进制为输入的程序将同时接受两者,但是.

4) .如果您有一个程序,坚持字母大写,使用strtoupper将工作。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23740825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档