我有关于RSA实施的任务。刚刚开始研究它。 我需要关于随机密钥生成的一些想法。我清楚这些理论,但不清楚如何为公钥和私钥生成这些随机数。 我可以得到一些帮助吗?
答案 0 :(得分:3)
RSA的Java实现可能与此类似:
import java.math.BigInteger;
import java.security.SecureRandom;
import java.util.*;
class Rsa_Implementation
{
private BigInteger n, d, e;
public Rsa_Implementation(int bitlen)
{
SecureRandom r = new SecureRandom();
BigInteger p = new BigInteger(bitlen / 2, 100, r);
BigInteger q = new BigInteger(bitlen / 2, 100, r);
n = p.multiply(q);
BigInteger m = (p.subtract(BigInteger.ONE))
.multiply(q.subtract(BigInteger.ONE));
e = new BigInteger("3");
while(m.gcd(e).intValue() > 1) e = e.add(new BigInteger("2"));
d = e.modInverse(m);
}
public BigInteger encrypt(BigInteger message)
{
return message.modPow(e, n);
}
public BigInteger decrypt(BigInteger message)
{
return message.modPow(d, n);
}
}