PHP random_bytes返回不可读的字符

时间:2017-07-02 18:57:14

标签: php mysql

我正在使用:

 random_bytes(30);

为我的程序生成一个随机字符串。然后将该字符串存储在mysql数据库中。但是,当我运行该函数时,我得到一个输出,如

T�Ը�@(���m

包含不可读的字符。当我尝试将其存储在我的数据库中时,不会存储 字符,因此这意味着字符串未被正确保留。

如何才能使它返回一个只有可读字符的字符串,这些字符在我的mysql数据库中不会丢失?

谢谢!

1 个答案:

答案 0 :(得分:0)

random_bytes生成任意长度的加密随机字节串,适合加密使用,例如生成盐,键或初始化向量时。像这样使用

$bytes = random_bytes(5);
echo bin2hex($bytes);

您也可以编写自己的代码来生成特定长度的随机字符串

$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$charactersLength = strlen($characters);
$randomString = '';
for ($i = 0; $i < $length; $i++) {
    $randomString .= $characters[rand(0, $charactersLength - 1)];
}
echo $randomString;