如何使用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;
}
我有一个 base64 编码字符串(126 个字符)的公钥,如何使用编码字符串创建“PublicKey”并将其与 Cipher 一起使用。
您的 base64 字符串可能是 X509EncodedKeySpec。我只能猜测。如果是这样,您应该对字符串进行 Base64 解码以获得byte []
。然后构建一个X509EncodedKeySpec
由此byte []
。然后创建一个RSA实例KeyFactory
,并使用generatePublic()
此 KeyFactory 的方法来获取PublicKey
。然后可以将该公钥传递给Cipher.init()
.
注意:要执行 Base64 解码,请使用阿帕奇公共编解码器 http://commons.apache.org/codec/, or 更难的 base64 解码器 http://iharder.sourceforge.net/current/java/base64/.
2017 年 3 月 8 日更新:
好消息是,Java 8 现在包含了一个 Base64 编码/解码类,java.util.Base64 https://docs.oracle.com/javase/8/docs/api/java/util/Base64.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)