以下是我仅使用RSA公钥加密字符串的方式。
首先将PEM格式的公钥保存到文件名pubkey.pem中
-----BEGIN PUBLIC KEY-----
AJOnAeTfeU4K+do5QdBM2BQUhfrRI2rYf/Gk4...
-----END PUBLIC KEY-----
查找公共RSA密钥模数
$ openssl rsa -pubin -in pubkey.pem -modulus -noout
Modulus=F56D...
查找公共RSA密钥指数
$ openssl rsa -pubin -in pubkey.pem -text -noout
...
Exponent: 65537 (0x10001)
然后将它们插入以下代码。
BigInteger modulus = new BigInteger("F56D...", 16);
BigInteger pubExp = new BigInteger("010001", 16);
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
RSAPublicKeySpec pubKeySpec = new RSAPublicKeySpec(modulus, pubExp);
RSAPublicKey key = (RSAPublicKey) keyFactory.generatePublic(pubKeySpec);
Cipher cipher = Cipher.getInstance("RSA/ECB/NoPadding");
cipher.init(Cipher.ENCRYPT_MODE, key);
byte[] cipherData = cipher.doFinal(text.getBytes());