在网上找了很久,如果用默认的生成publicKey是可以正常返回加密的,但是如果指定publicKey的代码加密出来都是这样的
本来想简单点没有想到研究好久一直没搞定,最后终于找到了一个非常好用的加密方法
public static String encrypt(String data, String pubKey)
throws NoSuchAlgorithmException, InvalidKeySpecException, NoSuchPaddingException,
InvalidKeyException, BadPaddingException, IllegalBlockSizeException,
UnsupportedEncodingException {
pubKey = pubKey.replaceAll("\\n", "");
pubKey = pubKey.replace("-----BEGIN RSA PUBLIC KEY-----", "");
pubKey = pubKey.replace("-----END RSA PUBLIC KEY-----", "");
pubKey = pubKey.trim();
// base64编码的公钥
byte[] decoded = BaseEncoding.base64().decode(pubKey);
KeyFactory kf = KeyFactory.getInstance("RSA");
PublicKey publicKey = kf.generatePublic(new X509EncodedKeySpec(decoded));
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
return BaseEncoding.base64().encode(cipher.doFinal(data.getBytes("UTF-8")));
}
调用方法如下
也可以正常返回加密串,这里只想说加密设置publicKey,没有做解密处理