【发布时间】:2016-05-21 03:09:32
【问题描述】:
我正在用openssl_encrypt 加密一些数字,例如:
<?php
$input = 123;
$binary = decbin($input);
echo $binary; // outputs: 1111011
$cipher = 'aes-128-ecb';
$key = openssl_random_pseudo_bytes(32);
$encodedRaw = openssl_encrypt($binary, $cipher, $key, true);
echo $encodedRaw; // outputs: D�f�e↓v�ne��|۵�
现在,因为一切都是一个数字,并且 encodedRaw 只是一些二进制流(它转换为一些奇怪的类似随机的字符),我试图将其转换回二进制 (01) 格式。
$binary2 = bindec($encodedRaw);
echo $binary2; // outputs: 0
似乎 bindec() 失败并返回 false,它被 PHP 神奇地转换为 0。为了确认这一点,我创建了一个包含 20 个随机 $input 的循环,它们在最后一步都返回了 0。
如何将openssl_encrypt 输出转换为二进制字符串(由0 和1 组成)?
【问题讨论】:
-
1)
echo false什么都不输出,0已经是东西了。 2) 请参阅the manual 了解bindec的期望;它实际上并不处理原始二进制字符串。 -
那么如何将原始二进制字符串转换为二进制字符串呢?