Реализация RSA на Java - PullRequest
       4

Реализация RSA на Java

2 голосов
/ 26 декабря 2011

У меня есть задание по внедрению RSA. Только сейчас начал работать над этим. Мне нужны идеи по генерации случайных ключей. Я разбираюсь в теориях, но не понимаю, как генерировать эти случайные числа для открытого ключа и закрытого ключа. Могу ли я получить помощь по этому поводу?

1 Ответ

3 голосов
/ 26 декабря 2011

Java-реализация RSA может выглядеть примерно так:

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);
}
}
...