gpt4 book ai didi

php - PHP 中大字符串的按位运算

转载 作者:行者123 更新时间:2023-12-02 03:30:35 24 4
gpt4 key购买 nike

这是我的问题。出于兼容性原因,我目前正在尝试在 PHP 中实现一些加密标准。我现在正在研究的是SHA256和SHA512。它们都是相当简单的标准,我对此没有意见。

但是,SHA512 需要对 64 位整数进行按位运算。由于 PHP 只能有 32 位整数(通过编译),这给我带来了一个问题。如何实现必要的按位函数(模、移位、旋转、加、异或、和、或等),以便保持兼容性和合理的性能水平...

我知道其中一些函数的实现是通过 2 个 32 位整数轻松完成的。但是,这对于 shiftrotate 有何作用?

我想做的是以二进制形式存储字符串(作为 01010 的字符串)。这样,所有按位运算将完全独立于体系结构。但这可能会导致性能大幅下降,因为它们在标准(以及库的其他部分)中使用得非常频繁。

所以我的问题是:如何在 PHP 的 32 位编译中轻松允许至少 64 位字符串操作,同时仍然保持每个步骤的合理性能水平......?

哦,我的目标是可移植性,所以没有扩展。我会考虑其他库,但它们必须是可移植的......

最佳答案

将值存储在字符串中确实是正确的方法。

但不是存储 1 和 0,而是在每个字节中存储 8 位。从字符串中提取部分整数仍然很容易。您确实需要手动执行移动等所有操作。

关于php - PHP 中大字符串的按位运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5537839/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com