1

我相信在 64 位 JVM 中 long[] 比 int[] 效率更高,并且可以显着加快 RSA 操作。

位是 long[] 中的一个问题,但是我们可以使用一些原生的方法来强制 long 作为 unsigned,例如long z = u64add(x, y, cr),这里cr是一个boolean[],可以替换long z = x + y

4

1 回答 1

4

BigInteger支持multiply(),不只是add()。由于multiply()是更昂贵的操作,它的速度对于算法来说也是最重要的。

将两个 64 位整数相乘得到 128 位结果。Java 中没有 128 位整数类型,因此获得正确结果不仅仅是“执行操作并移位一些位”。您必须将这两个数字分成 4 个 32 位块,将它们相乘,然后组合结果。或者添加一个 JVM 内部函数,以便可以使用本机 128 位操作。不是做不到,更多的是成本效益的事情。

于 2020-08-02T13:42:38.253 回答