我对编码很新。我试图获取用户输入,将其文本更改为ASCII值,然后使用我制作的RSA密钥对其进行加密。 目前我有这个代码:
MKAnnotationView
目前的输出是: 请输入您的留言: 你好 104101108108111(这是你好的ASCII值) 0.0 1.0 128.0 130.0 115.0 146.0
我不确定为什么要打印这些数字,我期待104101108108111的加密版本。
任何指导将不胜感激!! :)
答案 0 :(得分:0)
这有效(假设你有正确的RSA详情):
public class RSA {
public static void main(String args[]) {
int p = 11, q = 17;
int n = p * q; //187
int phi = (p - 1) * (q - 1); //160
int e = 7, d = 23;
Scanner input = new Scanner(System.in);
System.out.print("Please enter your message: ");
String msg = input.nextLine().trim();
byte[] msgBytes = msg.getBytes();
byte[] encryptedBytes = new byte[msgBytes.length];
for (int i = 0; i < msgBytes.length; i++) {
//below works only because n==187
encryptedBytes[i] = (byte) (Math.pow(msgBytes[i], e) % n);
}
System.out.println("Encrypted string : " + new String(encryptedBytes));
System.out.println("Encrypted string base64 : " + new String(Base64.getEncoder().encode(encryptedBytes)));
}
}
请注意它使用的是Base64
,可以从Java 8开始使用。