【发布时间】:2011-11-10 08:41:47
【问题描述】:
我注意到 PHP 中的 openssl 和 mcrypt 函数都只接受要加密为字符串的数据。这意味着 (int)1234567890 的值在最初只是一个 4 字节的 int 时被转换和加密为 10 字节的字符串。是否有任何加密方法(与 PHP 捆绑或作为外部函数/类)允许对整数进行加密?
【问题讨论】:
标签: php encryption openssl mcrypt
我注意到 PHP 中的 openssl 和 mcrypt 函数都只接受要加密为字符串的数据。这意味着 (int)1234567890 的值在最初只是一个 4 字节的 int 时被转换和加密为 10 字节的字符串。是否有任何加密方法(与 PHP 捆绑或作为外部函数/类)允许对整数进行加密?
【问题讨论】:
标签: php encryption openssl mcrypt
没有。如果要将整数加密为 4 字节二进制表示,则必须对其进行预转换:
$bin = pack("L", $int); // unsigned 4-byte integer
xyz_crypt(...)
和unpack 解密后再次出现。
【讨论】:
mcrypt 对字符串而不是整数进行操作,因此您需要使用pack() 来将整数打包成一个 4 字节的字符串。 (显然,反函数是unpack()。)
【讨论】: