我正在尝试实现一个使用128位密钥的密码。关键时间表的一部分是将键29位向右旋转,但我不确定如何做到这一点,因为Java中没有可以容纳整个键的单一数据类型。我把它存放在两个长的,一个用于上半部分,一个用于下半部分。以下是我认为应该有用的数学运算但是没有做到这一点:
keyLower >>>= 29;
keyLower |= keyUpper << 35;
keyUpper >>>= 29;
keyUpper |= keyLowerCopy << 29;
任何人都可以帮助我吗?
答案 0 :(得分:3)
你在最后一行输错:
// vv
keyUpper |= keyLowerCopy << 29;
看起来应该是<< 35
。
答案 1 :(得分:-1)
看看BigInteger。
不可变的任意精度整数。 [...]移位操作的语义扩展了Java移位操作符的语义,以允许负移位距离。具有负移位距离的右移导致左移,反之亦然。省略了无符号右移运算符(&gt;&gt;&gt;),因为此操作与&#34;无限字大小&#34;相结合没有多大意义。这个类提供的抽象。