java - 在 Java 中更快地重新制定方程式

标签 java function math encryption modulus

我是做加密的,私钥指数d,需要d乘以e再取模,余数为1,函数i已经是这样了:

private void genD() {
        d = e / 2;
        // solve for d given d*e = 1 (mod eN)
        while ((d * e) % eN != 1) {
            d++;
        }
}

我现在所拥有的显然是一种粗暴的做事方式,遍历每个数字直到一个有效。我知道方程式起作用,使用找到的工作示例插入数字 here ,但是使用我生成的数字非常非常慢。从逻辑上讲,我觉得有一种方法可以更快地完成这项工作,但我想不出怎么做?

感谢任何帮助!提前致谢:)

最佳答案

有一些并不十分困难的快速乘法逆算法,但也有一种内置于 Java 中的算法:

 BigInteger.valueOf(e).modInverse(BigInteger.valueOf(eN)).intValue();

计算乘法逆模另一个数的最流行算法是 http://en.wikipedia.org/wiki/Extended_Euclidean_algorithm#Modular_integers .

关于java - 在 Java 中更快地重新制定方程式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21078737/

相关文章:

java - JUnit5 中的 assertAll 与多个断言

c++ - 可以单独声明函数数组的元素吗?

java - 计算 2 个相关方程的解数

javascript - JS : find lowest/highest number from array within a specific range

python - 用 Python 分解三项式

java.lang.NoSuchMethodError : org. apache.commons.codec.binary.Hex.encodeHexString 错误

java - 根据java中的输入值准备查询

java - J2ME 中的表或网格布局

c - 如何影响 C 中结构的相同副本?

c - 为什么函数在没有指定返回类型的情况下有返回值?