首页 > 编程知识 正文

RSA公钥解密,rsa公钥加密私钥解密过程

时间:2023-05-06 01:42:25 阅读:141489 作者:2187

要获取企业微信会话的存档内容,必须使用RSA PKCS1算法和私钥对获取的内容进行解密

因为Java本身不支持pkcs1,所以必须在项目中导入三个jar包。

bcprov-jdk15on、bcpg-jdk16、bcpkix-jdk15on;

必须基于jdk选择版本。 这里使用的jdk版本是1.8;

maven导入:

ependencygroupidorg.bouncy castle/groupidartifactidbcprov-JDK 15 on/artifactidversion 1.64/version/dependency! -- Feb, 2011---- dependencygroupidorg.bouncy castle/groupidartifactidbcpg-JDK 16/artifactidversion 1.46/version/de per-- 2019-- dependencygroupidorg.bouncy castle/groupidartifactidbcpkix-JDK 15 on/artifactidversion 1.64/version/dependence 需要对所取得的各消息的encrypt_random_key的内容进行base64 decode来取得字符串str1,用publickey_ver指定版本的私钥,并使用RSA PKCS1算法对str1进行解密

privatestringdecryptrsa (stringstr, String privateKey ) throws exception { security.add provider (new org.bouncy castle.j curity.add provider (new org.bouncy cceprider ) RSA.init(cipher.decrypt_mode,getprivatekey ) (privatekey ); //getprivateKey(privatekey ) :将pkcs1的加密密钥格式byte [ ] utf8=RSA.do final (base64.get decoder ).decode ) 返回结果; }将字符串转换为满足要求的私钥:

privateprivatekeygetprivatekey (string private key ) throws exception (stringprivkey PEM.replace all ) (() ) . replace (-----begin private key----、'、'、'')、replace(----endprivatekey----、' ) byte [ ] e //base64是换行符、-等特殊符号privatekeyinfopki=private keyinfo.getinstance (e ); RSA private key PK CS1 key=RSA private key.getinstance (PKI.parse private key ) ); //rsaprivatekeystructurepkcs1key=RSA private key structure.getinstance (PKI.parse private key ) ); //byte [ ] PK CS1 bytes=PK CS1 key.get encoded (; 读取PKCS#1的私钥//rsaprivatekeystructureasn1private key=newrsaprivatekeystructure ((asn1 sequence ) asn1 sequence.frombyce rsaprivatekeyspecrsaprivatekeyspec=newrsaprivatekeyspec (asn1 private key.get modulus ), ASN1privatekey.getprivateeec这里注释的是过时的方法,同样需要的效果rsaprivatekeyspec=newrsaprivatekeyspec (PK CS1 key.) 实例化可以完成PKcs1key.getprivateeec )的KeyFactory对象,并创建RSA算法keyfactory keyfactory=keyfactory.getinstance (RSA算法) PrivateKey对象的privatekeyrealprivatekey=keyfactory.generate private (RSA private key spec ); 返回权限密钥; }私钥字符串的格式

//中间键内容省略//PK CS1 privatestaticstringprikey='---- begin RSA private key--- n ' '键的内容是分行 n '-- -需要end//pkcs8 privatestaticstringprikey=-------begin private key---- n ' '密钥的内容是分支机构 n '------ "

3359 blog.csdn.net/Xiao Bai _ _ 111/article/details/105113022

33559 www.cn blogs.com/liuyanygz/p/12519001.html

相关测试站点:

33558 www.me tools.info/code/c85.html

3358 tool.chinaz.com/tools/base 64.aspx

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。