J'essaie d'implémenter le RSA algorithm, mais pour une raison quelconque, mon code ci-dessous ne produit pas de résultats corrects (notez que seul le code pertinent est affiché).Petit problème dans l'implémentation de l'algorithme RSA
BigInteger n = p.multiply(q);
BigInteger totient = (p.subtract(BigInteger.ONE)).multiply(q.subtract(BigInteger.ONE));
Random rand = new Random();
BigInteger e;
do
{
e = new BigInteger(totient.bitLength(), rand);
} while ((e.compareTo(BigInteger.ONE) <= 0 || e.compareTo(totient) >= 0)
&& !((e.gcd(totient)).equals(BigInteger.ONE)));
BigInteger d = (BigInteger.ONE.divide(e)).mod(totient);
sortie de l'échantillon en utilisant 127 et 131 comme les entrées de nombres premiers (notez que 16637 est correct, mais 7683 et 0 ne sont pas):
Public Key: (16637,7683)
Private Key: (16637,0)
Merci pour toute aide!
Montrez-nous un peu de sortie – Woot4Moo
Sortie d'échantillon ajoutée. –
Je ne sais pas avec certitude, mais il y a 99% de chances que BigInteger d = (BigInteger.ONE.divide (e)). Mod (totient); est de donner zéro à la suite de cette division() – Jonathan