0
RSA暗号化を使用してユーザー入力を暗号化しようとしています。暗号化中にNaNを返すJava RSAアルゴリズム
Eclipseで私のデバッグモニタを使用すると、コードがasciiLetterに 'e'で動いてmod 'n'にしようとすると、 'e'と 'n'が大きすぎて戻ります無限大またはNaN。これを変更する方法に関するガイダンスはありますか?
私は、1024〜128ビット長を下に変更したが、これは効果がなかったです。
後、私は、復号化する必要があるが、この部分は、事前に作業を取得しようとしています。
public class RSA {
static int bitlength = 128;
private static Random r = new Random();
private static BigInteger p = BigInteger.probablePrime(bitlength, r);
private static BigInteger q = BigInteger.probablePrime(bitlength, r);
private static BigInteger n = p.multiply(q);
private BigInteger phi = p.subtract(BigInteger.ONE).multiply(q.subtract(BigInteger.ONE));
private static BigInteger e = BigInteger.probablePrime(bitlength/2, r);
private BigInteger d;
private static BigInteger encryptedMessage; {
while (phi.gcd(e).compareTo(BigInteger.ONE) > 0 && e.compareTo(phi) < 0) {
e.add(BigInteger.ONE);
}
BigInteger d = (e.modInverse(phi));
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Please enter your message: ");
String clearMsg = input.nextLine().trim(); // String clearMsg = input.next();
System.out.println(clearMsg); // Check message trimmed
char userInputArray[] = clearMsg.toCharArray();
ArrayList<BigInteger> cipherTextArray = new ArrayList<BigInteger>();
for (int i = 0; i < userInputArray.length; i++) {
int letter = userInputArray[i];
BigInteger bigLetter = new BigInteger(String.valueOf(letter));
BigInteger asciiLetter = (BigInteger) bigLetter;
BigInteger encryptedMessage = pow(asciiLetter, e);
BigInteger encryptM = encryptedMessage;
BigInteger encryptedMessageMod = encryptM.mod(n);
cipherTextArray.add(encryptedMessageMod);
}
System.out.println(cipherTextArray);
}
private static BigInteger pow(BigInteger asciiLetter, BigInteger e) {
// TODO Auto-generated method stub
return null;
あなたはなぜ 'BigIntegerのencryptedMessage = POW(asciiLetter、e)を不思議に思っている;'は動作しませんか? ... pow(...)を実装していません – DarkSquirrel42
これはコードと関係しますか? private static BigInteger pow(BigInteger asciiLetter、BigInteger e){ // TODO自動生成メソッドスタブ return null; 私はこれが何をするかわからないので、Eclipseはそれを追加したい私はコーディングに新しいですし、ビットが立ち往生しています言うように:( – user7888294
使用 'BigIntegerのencryptedMessage = asciiLetter.pow(E);?ただ、'代わりに – dejvuth