我一直在尝试解密我的加密邮件一段时间,但它并不像我喜欢的那样工作。我有加密工作的输出,但我无法解密加密的消息!
以下是我的价值观: 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);
}
}
答案 0 :(得分:1)
您的加密和解密代码看起来很好,对称。这不是RSA的诀窍。在RSA中,您具有用于加密的公钥e
和用于解密的私钥d
。我甚至不在您的解密代码中看到d
?
答案 1 :(得分:0)
@EJP是对的。
我输入了解密密钥,它完美无缺!因此,我将newE
替换为我的加密密钥而不是加密密钥,现在它终于可以正常工作了。对我而言,这是一个愚蠢的小错误。谢谢你的提示!