如何在Java中旋转128位数

时间:2015-03-20 01:16:49

标签: java cryptography bit-manipulation

我正在尝试实现一个使用128位密钥的密码。关键时间表的一部分是将键29位向右旋转,但我不确定如何做到这一点,因为Java中没有可以容纳整个键的单一数据类型。我把它存放在两个长的,一个用于上半部分,一个用于下半部分。以下是我认为应该有用的数学运算但是没有做到这一点:

keyLower >>>= 29;
keyLower |= keyUpper << 35;
keyUpper >>>= 29;
keyUpper |= keyLowerCopy << 29;

任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:3)

你在最后一行输错:

//                          vv
keyUpper |= keyLowerCopy << 29;

看起来应该是<< 35

答案 1 :(得分:-1)

看看BigInteger

  

不可变的任意精度整数。 [...]移位操作的语义扩展了Java移位操作符的语义,以允许负移位距离。具有负移位距离的右移导致左移,反之亦然。省略了无符号右移运算符(&gt;&gt;&gt;),因为此操作与&#34;无限字大小&#34;相结合没有多大意义。这个类提供的抽象。