将具有ASCII值的String存储到Array中并使用RSA密钥

时间:2017-04-11 12:52:28

标签: java arrays encryption rsa

我对编码很新。我试图获取用户输入,将其文本更改为ASCII值,然后使用我制作的RSA密钥对其进行加密。 目前我有这个代码:

MKAnnotationView

目前的输出是: 请输入您的留言: 你好 104101108108111(这是你好的ASCII值) 0.0 1.0 128.0 130.0 115.0 146.0

我不确定为什么要打印这些数字,我期待104101108108111的加密版本。

任何指导将不胜感激!! :)

1 个答案:

答案 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开始使用。