将“随机字节”转换为字符串时,是否应该使用base64_encode或bin2hex有什么不同吗?
$bytes = openssl_random_pseudo_bytes(32); // alternatively read from /dev/urandom
echo base64_encode($bytes); // some 44 character string
echo bin2hex($bytes); // some 64 character string
要用作bcrypt的盐,显然修改后的base64是正确的选择,因为这是预期的.但对于帐户注册确认密钥或唯一的非顺序对象标识符等上下文,这是正确的选择吗?
我知道random_compat
library,但这也是为了学习目的.
解决方法:
除了长度?并不是的.它们都是相同数据的表示.这个选择由你.
但请记住:
> Base64数据可能包含字符,/和=,可能需要进行URL编码.
>由于Base64数据可能包含任何字母数字字符,因此它可能包含令人反感的单词. (这在技术上也可以使用十六进制编码数据,但不太常见,因为它只使用字母A到F.)