RSA使用Android中的base64编码公钥进行加密

Sur*_*esh 10 java android rsa

如何使用base-64编码的公钥对字节数组进行RSA加密?

在阅读了几篇关于如何在Java中进行RSA加密的文章(谷歌搜索)后,找到了以下片段

public byte[] rsaEncrypt(byte[] data) {
  PublicKey pubKey = readKeyFromFile("/public.key");
  Cipher cipher = Cipher.getInstance("RSA");
  cipher.init(Cipher.ENCRYPT_MODE, pubKey);
  byte[] cipherData = cipher.doFinal(src);
  return cipherData;
}
Run Code Online (Sandbox Code Playgroud)

我将公钥作为base64编码的字符串(126个字符),如何使用编码的字符串创建"PublicKey"并将其与Cipher一起使用.

Jam*_*olk 8

您的base64字符串可能是X509EncodedKeySpec.我只能猜测.如果是这样,你应该base64解码字符串以获得byte [].然后X509EncodedKeySpec从中构建一个byte [].然后创建一个RSA实例KeyFactory,并使用generatePublic()此KeyFactory 的方法获取PublicKey.然后可以将此公钥传递给Cipher.init().

注意:要执行base64解码,请使用apache commons编解码器Harder base64解码器.

更新2017年3月8日:Java 8现在包含一个Base64编码/解码类, java.util.Base64