我正在使用photo_data[:, :, 0]
创建一个随机数,该随机数将返回类似
random_bytes()
然后,当我��;w ���%N�:0���c1x*#�M��
时,它会返回类似base64_decode()
的内容,这是令人困惑的,因为它只是加密内容的较短版本。
如何获取实际的字符串?
答案 0 :(得分:3)
您使用了错误的功能:base64_decode
被用来解码一个base64编码的字符串。在这里,您的字符串不是经过base64编码的,因此使用较短的字符串是完全正常的。
要生成随机(可读)字符串,可以使用bin2hex
或base64_encode
:
$data = random_bytes(32);
$b = base64_encode($data);
echo $b;
xROAVp/JUq4DuEGe87HYINXncOHArYzc9oeziO/TTNw=
答案 1 :(得分:1)
在结果上使用bin2hex php函数,以便查看
bin2hex(random_bytes(number of bytes)) or
base64_encode(bin2hex(random_bytes(number of bytes)))
答案 2 :(得分:1)
random_bytes
不会返回base64编码的值,因此尝试从结果中解码一个值不会使您走得太远。
As the manual suggests,如果要生成随机的“字符串”,则需要通过类似bin2hex
的方式运行它:
$bytes = random_bytes(5);
var_dump(bin2hex($bytes));
string(10)“ 385e33f741”
答案 3 :(得分:0)
您获得了实际的字符串,但是这些字符代码无法显示,根据字体的不同,您可能会看到不同的字符作为“普通”字符
如果您想查看一些字母,可以遵循以下算法: https://3v4l.org/FTQL5
$str = random_bytes(13);
$decoded = '';
$letterRange = (ord('a')-ord('Z'));
for($i = 0; $i < strlen($str); $i++)
{
$decoded .= chr(ord($str[$i])%$letterRange + ord('a'));
}
echo $str.'|'.$decoded;