在 PHP 中加密整数

发布于 2024-12-02 16:52:21 字数 149 浏览 2 评论 0原文

我注意到 PHP 中的 openssl 和 mcrypt 函数都只接受要加密为字符串的数据。这意味着 (int)1234567890 的值最初只是一个 4 字节 int,但它被转换并加密为 10 字节字符串。是否有任何加密方法(与 PHP 捆绑或作为外部函数/类)允许对整数进行加密?

I've noticed that both openssl and mcrypt functions in PHP accept data to be encrypted as strings only. This means a value of (int)1234567890 is converted and encrypted as a 10-byte string when it was originally just a 4-byte int. Are there any encryption methods (bundled with PHP or as an external function/class) that allows for the encryption of integers?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

谜兔 2024-12-09 16:52:21

不可以。如果您想将整数加密为 4 字节二进制表示形式,则必须对其进行预转换:

$bin = pack("L", $int);    // unsigned 4-byte integer
xyz_crypt(...)

并且 unpack 解密后再次执行此操作。

No. If you want to encrypt your integer as the 4-byte binary representation, then you have to preconvert it:

$bin = pack("L", $int);    // unsigned 4-byte integer
xyz_crypt(...)

And unpack this again after decryption.

爱她像谁 2024-12-09 16:52:21

mcrypt 对字符串进行操作,而不是整数,因此您需要使用 pack()好吧,将一个整数打包成一个 4 字节字符串。 (很明显,反函数是 unpack()。)

mcrypt operates on strings, not integers, so you'll need to use pack() to, well, pack an integer into a 4-byte string. (The inverse function is, sensibly enough, unpack().)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文