RSA PKCS1私钥解密(JAVA实现)

在开始编码前,你需要根据你的JAVA版本下载2个JAR文件
Bouncycastle的主JAR包
bcprov-jdk15on-164.jar
和OPENSSL相关JAR包
bcpkix-jdk15on-164.jar
官网
https://www.bouncycastle.org/java.html

使用RSA PKCS1格式私钥解密字符串后进行Base64解密

private String decryptRSA(String str, String privateKey) throws Exception {
    Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
    Cipher rsa = Cipher.getInstance("RSA/ECB/PKCS1Padding", "BC");
    rsa.init(Cipher.DECRYPT_MODE, getPrivateKey(privateKey));
    byte[] utf8 = rsa.doFinal(Base64.decodeBase64(str));
    String result = new String(utf8,"UTF-8");
    return result;
}

将字符串转化为符合要求的私钥

private PrivateKey getPrivateKey (String privateKey) throws Exception {
    Reader privateKeyReader = new StringReader(privateKey);
    PEMParser privatePemParser = new PEMParser(privateKeyReader);
    Object privateObject = privatePemParser.readObject();
    if (privateObject instanceof PEMKeyPair) {
    	PEMKeyPair pemKeyPair = (PEMKeyPair) privateObject;
    	JcaPEMKeyConverter converter = new JcaPEMKeyConverter().setProvider("BC");
    	PrivateKey privKey = converter.getPrivateKey(pemKeyPair.getPrivateKeyInfo());
    	return privKey;
    }
    return null;
}

私钥字符串的格式

//中间密钥内容省略
private static String priKey = 
"-----BEGIN RSA PRIVATE KEY-----\n" + 
"密钥内容,需要分行\n" + 
"-----END RSA PRIVATE KEY-----";

如果有幸帮到你,请帮我点个【赞】

发布了2 篇原创文章 · 获赞 0 · 访问量 75
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览