irc*_*ell 13 php bitwise-operators 32bit-64bit
这是我的问题.出于兼容性原因,我目前正在尝试在PHP中实现一些加密标准.我现在正在研究的是SHA256和SHA512.它们都是相当直接的标准,我对此没有任何问题.
但是,SHA512需要对64位整数进行逐位运算.由于PHP只能有32位整数(使用编译),这让我有一个问题.如何实现必要的按位函数(模数,移位,旋转,添加,xor和/或等),以便我保持兼容性和合理的性能水平......
我知道其中一些实现这些功能的工作只需要2个32位整数.然而,如何会为这项工作shift和rotate?
我想到的是以二进制形式存储字符串(作为字符串01010).这样,所有按位操作都将完全独立于架构.但这可能会导致大量的性能下降,因为它们在标准中(以及在库的其他部分中)经常使用.
因此我的问题是:如何在PHP的32位编译中轻松地允许至少64位字符串操作,同时仍然保持每个步骤的性能合理水平......?
哦,我的目标是可移植性,所以没有扩展.我会考虑的其他图书馆,但它们必须是便携式的......