旋转两个长

时间:2014-03-06 13:36:05

标签: java

我正在研究一种分组密码算法,并且要求说明128位密钥状态(存储的大端)需要向右移动25位。关键状态必须是两个长。这是我最近尝试解决这个问题的尝试。我将键的上半部分和下半部分都移动到右边的25位,将这些新值存储在新的long中,然后将键旋转到39位。然后用第二个下键对第一个新的上键进行异或,并将其存储在键的上半部分,然后对其他两个移位键进行相同操作,但将其存储在键的下半部分。这背后的想法是它需要在键的上半部分的前面有那25个移位的位。

long rotKeyUpper = keyUpper >> 25; 
long rotKeyLower = keyLower >> 25;
long rotKeyUpper2 = keyUpper << 39;
long rotKeyLower2 = keyLower << 39;
keyUpper = rotKeyUpper ^= rotKeyLower2;
keyLower = rotKeyUpper2 ^= rotKeyLower;
keyUpper |= keyLower;

这有意义吗?

编辑:是的,我的意思是旋转。为了澄清,“rotKeyUpper”和“rotKeyLower”长期只是为了存储旋转的位 - keyUpper和keyLower是实际键的两个长 - 抱歉混淆。

0 个答案:

没有答案