我正在尝试用python模拟用Java编写的东西。在Java部分有一个对称的加密算法,密钥生成依赖于Java长整数溢出。我现在需要在Python中完成这项工作才能在那里解密。我没有写加密算法,我不能改变它。这是Java中密钥生成器函数的一部分:
long a;
long b;
...
for (...)
...
a = b + ((b << 1) + (b << 4) + (b << 7) + (b << 8) + (b << 35));
现在,当我将它复制到Python时,我将收到大量的数字,Python将执行它应该执行的操作,并向我的整数添加更多字节,而在Java中,整数只是不断溢出,最终返回64位键。这并不是全部代码,它实际上是一个循环,不断地对a和b执行这个和其他操作,所以我不能只取最高的64位或类似的东西,并将其视为我的新a。
然而,我现在需要在Python中模拟这种行为来获取我的解密密钥。
在Python中如何实现这一点?这是可能的,还是我需要依赖一个C函数来完成这部分,然后在那里生成密钥?
最佳答案
如果将所有整数存储在numpy数组中,它们将溢出(因为numpy使用C进行算术运算)。