Base64编码或bin2hex随机字符串

时间:2015-09-20 18:50:32

标签: php string random base64

将“随机字节”转换为字符串时,是否应使用base64_encodebin2hex是否有任何区别?

$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但这也是出于学习目的。

1 个答案:

答案 0 :(得分:4)

除了长度?并不是的。它们都是相同数据的表示。选择取决于你。

但请记住:

  • Base64数据可能包含可能需要进行网址编码的字符+/=

  • 由于Base64数据可能包含任何字母数字字符,因此轻微机会包含令人反感的字词。 (这在技术上也可以使用十六进制编码数据,但不太常见,因为它只使用字母A到F.)