RSA加密和解密JAVA

时间:2015-03-05 09:04:53

标签: java encryption cryptography rsa

我一直在尝试解密我的加密邮件一段时间,但它并不像我喜欢的那样工作。我有加密工作的输出,但我无法解密加密的消息!

以下是我的价值观: P :67 :71 PQ :4757 PhiPQ :4620 E :13 D :1777

以下是加密消息的输出(输入' hello'时): ????(工作正常)

以下是解密消息的输出(输入' hello'时): 1109 314 2309 2309 4015(这是有效的,但不会给我回复角色'你好')

我们应该在代码(C ^ D)%PQ 中实施此公式,但我在解密加密邮件时并不完全确定如何实现它。< / p>

我不确定问题是什么,这是我的代码:

加密

    String encryptedMessage = "";

    String message = JOptionPane.showInputDialog(null, "Enter a message: ");

    int c = 0;
    for (int i = 0; message.length() > i; i++) {
        char l = message.charAt(i);
        int m = l;
        c = 1;
        int newE = e;

        while (newE > 0) {
            if (newE % 2 != 0) {
                c = ((c * m) % (pq));
            }
            newE = newE / 2;
            m = (((m * m)) % (pq));
        }
        encryptedMessage = encryptedMessage + (char) c;
    }

    System.out.println("Encrypted Message is: " + encryptedMessage);

DECRYPTION

    String decryptedMessage = "";

    c = 0;
    for (int i = 0; encryptedMessage.length() > i; i++) {
        char l = encryptedMessage.charAt(i);
        int m = l;
        c = 1;
        int newE = e;

        while (newE > 0) {
            if (newE % 2 != 0) {
                c = ((c * m) % (pq));
            }
            newE = newE / 2;
            m = (((m * m)) % (pq));
        }
        decryptedMessage = decryptedMessage + " " + (c);
    }

    // prints out 'decryptedMessage' value
    System.out.println("Decrypted Message is: " + decryptedMessage);
}
}

2 个答案:

答案 0 :(得分:1)

您的加密和解密代码看起来很好,对称。这不是RSA的诀窍。在RSA中,您具有用于加密的公钥e和用于解密的私钥d。我甚至不在您的解密代码中看到d

答案 1 :(得分:0)

@EJP是对的。

我输入了解密密钥,它完美无缺!因此,我将newE替换为我的加密密钥而不是加密密钥,现在它终于可以正常工作了。对我而言,这是一个愚蠢的小错误。谢谢你的提示!