2

我正在尝试为 android 创建一个 RSA 文本加密应用程序,因此我创建了三个片段 Generate、Encrypt、Decrypt,其中我在生成片段中生成了 publickey、privatekey,然后用 BASE64 对其进行编码并在文本视图中显示(现在 user1 与他的共享朋友 user2 然后他转到他的应用程序并将密钥粘贴到 Encrypt Fragment textview 中)。

现在在 Encrypt Fragment 中,我已将获取的编码公钥值从文本视图转换为字符串,但我无法将其解码为公钥

生成,编码代码是

KeyPairGenerator kpg=KeyPairGenerator.getInstance("RSA");
               kpg.initialize(256);
               KeyPair kp=kpg.genKeyPair();
               publicKey=kp.getPublic();
               privateKey=kp.getPrivate();

 byte[] pubByte = publicKey.getEncoded();
 pubKeyStr = new String(Base64.encodeToString(pubByte,Base64.DEFAULT));

 byte[] priByte = privateKey.getEncoded();
 priKeyStr = new String(Base64.encodeToString(priByte,Base64.DEFAULT));
 return pubKeyStrr;

现在我们在文本视图中显示 pubKeyStr 值

在加密片段中,我从 textview 中获取了 pubKetStr 值作为

   String str1=editText.getText().toString();

请任何人建议如何解码此字符串 str1 以将其转换为 RSA 公钥

4

1 回答 1

3

如果您在以 base64 编码的文本字段中有密钥,请先将其转换为byte[]然后生成PublicKey

byte publicKeyData[] = Base64.decode(str1, Base64.DEFAULT)
X509EncodedKeySpec spec = new X509EncodedKeySpec(publicKeyData);
KeyFactory kf = KeyFactory.getInstance("RSA");
PublicKey publicKey = kf.generatePublic(spec);
于 2017-03-08T08:27:40.080 回答