PHP random_bytes 返回不可读的字符

Ong*_*glo 7 php mysql

我在用:

\n\n
 random_bytes(30);\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n
T\xef\xbf\xbd\xd4\xb8\xef\xbf\xbd@(\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbdm\n
Run Code Online (Sandbox Code Playgroud)\n\n

其中包括不可读的字符。当我尝试将其存储在数据库中时,\xef\xbf\xbd 字符未存储,因此这意味着该字符串未正确保存。

\n\n

我怎样才能让它返回一个只包含可读字符的字符串,并且不会在我的 mysql 数据库中丢失?

\n\n

谢谢!

\n

RAU*_*MAR 8

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

$bytes = random_bytes(5);
echo bin2hex($bytes);
Run Code Online (Sandbox Code Playgroud)

  • 虽然“random_bytes”生成加密安全的随机字节,但“rand”则不会。来自 [PHP `rand` 页面](http://php.net/manual/en/function.rand.php):*警告:此函数不会生成加密安全值*。 (8认同)
  • 示例代码将生成以 62 为基数的非加密安全伪随机字符,这本质上不适合几乎所有用途。 (4认同)
  • 仅对随机字节进行编码不会改变随机性,十六进制和 Base64 是产生 ASCII 字符的常见编码。 (2认同)