众所周知在.NET下的RSA类所生成的密钥为Xml格式,而其他语言比如java一般使用pkcs8格式的密钥,JavaScript一般使用pkcs1格式。我们在开发过程中很可能遇到需要与其他语言开发的api进行对接,如果遇到RSA加密解密,我们肯定需要保证key是相同的,才能保证数据的正确处理,我们肯定需要对密钥进行转换,下面我将我自己的使用经验分享给大家。

pkcs1和pkcs8的操作借助了开源项目bouncycastle

RSAUtil 项目

RSAUtil 项目是.NET Core下RSA算法使用帮助工具,支持使用RSA算法对数据进行加密,解密,签名和验证签名,支持xml,pkcs1,pkcs8三种密钥格式,支持这三种格式的密钥相互转换。最后还支持pem格式化。

使用

生成密钥

使用“RsaKeyGenerator”类。返回的结果是一个有两个元素的字符串的列表,元素1是私钥,元素2是公钥。

格式:XML

var keyList = RsaKeyGenerator.XmlKey(2048);

var privateKey = keyList [0];

var publicKey = keyList [1];

格式:Pkcs1

var keyList = RsaKeyGenerator.Pkcs1Key(2048);

var privateKey = keyList [0];

var publicKey = keyList [1];

格式:Pkcs8

var keyList = RsaKeyGenerator.Pkcs8Key(2048);

var privateKey = keyList [0];

var publicKey = keyList [1];

RSA密钥转换

使用“RsaKeyConvert”类。它支持这三种格式的密钥转换,即:xml,pkcs1,pkcs8。

XML-> Pkcs1:

私钥:RsaKeyConvert.PrivateKeyXmlToPkcs1()

公钥:RsaKeyConvert.PublicKeyXmlToPem()

XML-> Pkcs8:

私钥:RsaKeyConvert.PrivateKeyXmlToPkcs8()

公钥:RsaKeyConvert.PublicKeyXmlToPem()

Pkcs1-> XML:

私钥:RsaKeyConvert.PrivateKeyPkcs1ToXml()

公钥:RsaKeyConvert.PublicKeyPemToXml()

Pkcs1-> Pkcs8:

私钥:RsaKeyConvert.PrivateKeyPkcs1ToPkcs8()

公钥:不需要转换

Pkcs8-> XML:

私钥:RsaKeyConvert.PrivateKeyPkcs8ToXml()

公钥:RsaKeyConvert.PublicKeyPemToXml()

Pkcs8-> Pkcs1:

私钥:RsaKeyConvert.PrivateKeyPkcs8ToPkcs1()

公钥:不需要转换

加密,解密,签名和验证签名

XML,Pkcs1,Pkcs8分别对应类:RsaXmlUtil,RsaPkcs1Util,RsaPkcs8Util。它们继承自抽象类RSAUtilBase

加密:RSAUtilBase.Encrypt()

解密:RSAUtilBase.Decrypt()

Sign:RSAUtilBase.SignData()

验证:RSAUtilBase.VerifyData()

PEM格式化

使用类“RsaPemFormatHelper”。

格式化Pkcs1格式私钥:RsaPemFormatHelper.Pkcs1PrivateKeyFormat()

删除Pkcs1格式私钥格式:RsaPemFormatHelper.Pkcs1PrivateKeyFormatRemove()

格式化Pkcs8格式私钥:RsaPemFormatHelper.Pkcs8PrivateKeyFormat()

删除Pkcs8格式的私钥格式:RsaPemFormatHelper.Pkcs8PrivateKeyFormatRemove()

其他说明

直接使用命令安装:

Install-Package XC.RSAUtil

java pkcs1转pkcs8_.NET Core RSA密钥的xml、pkcs1、pkcs8格式转换和JavaScript、Java等语言进行对接...相关推荐

  1. .NET Core RSA密钥的xml、pkcs1、pkcs8格式转换和JavaScript、Java等语言进行对接

    众所周知在.NET下的RSA类所生成的密钥为Xml格式,而其他语言比如java一般使用pkcs8格式的密钥,JavaScript一般使用pkcs1格式.我们在开发过程中很可能遇到需要与其他语言开发的a ...

  2. java+基于dom4j工具类_基于dom4j的xml映射实体的工具类(java)

    基于dom4j的xml映射实体的工具类(java) 工具是基于dom4j,使用反射使实体属性与xml的标签关联,目前兼容List,Map后续更新兼容. 历史更新: 发布-2019-6-22 增加注解@ ...

  3. java script 月日年转年月日_js的如何进行日期格式转换成年月日

    可以把它写成一个函数: //date:时间, //type:格式数组 - - - ,年月日,/ / / function time(date,type){ if(typeof d == "o ...

  4. java对于微信平台语音接收以及处理,语音下载以及arm格式转换MP3

    2019年3月11号, 以下内容都是2015年写的东西,可能已经不能用 weixin-java-tools,现已更名Wxjava,一直使用这个,很方便,建议大家使用,如果有空到时候写一篇关于Wxjav ...

  5. ras私钥c#转java_C#和JAVA的RSA密钥、公钥转换

    C#的秘钥跟JAVA的密钥区别 RSA对于程序本身是没有区别的,其格式都是相同的.对于不同的程序来说,存储使用的语法(包装的类)会有所不同. RSA语法和语法标准有很多,大的类型大概分为ASN.1.P ...

  6. 关于java.lang.NoClassDefFoundError: org/springframework/core/metrics/ApplicationStartup问题的解决方法

    在初学spring整合jdbc,mybatis,test时,通过注解开发方式获取spring容器时执行到如下语句时报错: 错误详细为: Exception in thread "main&q ...

  7. org.apache.jasper.JasperException: The absolute uri: [http://java.sun.com/jsp/jstl/core] cannot be r

    项目启动报错 1.报错内容: 报错先是这样 按照百度的方法添加了c.tld和对应的web.xml文件 Sep 13, 2022 11:25:35 AM org.apache.catalina.core ...

  8. java定义时间格式大全_Java时间格式转换大全

    package com.date; import java.text.DateFormat; import java.text.ParseException; import java.text.Par ...

  9. java格式_java时间格式转换大全

    Java时间格式转换大全 import java.text.*; import java.util.Calendar; public class VeDate { /** * 获取现在时间 * * @ ...

最新文章

  1. 2018-4-2 幂律分布函数
  2. 安装MySQL之后修改编码方式
  3. sublimeText3安装package control和禁止弹出更新下载弹窗
  4. vector can通信源码_汽车电子CAN网络dbc文件
  5. Xpath语法学习记录
  6. L-BFGS算法/Broyden族/BFGS算法/阻尼牛顿法的Python实现代码
  7. 【Java】数值计算排雷指南
  8. python3语音控制电脑_python语音控制电脑_uusee全屏
  9. p46_IPv4地址
  10. Python数据可视化-matplotlib and seaborn
  11. 20个最漂亮的基于WordPress的企业网站
  12. 497.非重叠矩形中的随机点
  13. win10 多开 vpn
  14. java异常处理拦截器
  15. 黑客技术之初学者编程入门
  16. 直播盒子接口怎么采集,以下方法。
  17. Android 源码之Recovery升级的过程和问题分析
  18. JAVA8安装与配置
  19. java字段太多会栈溢出_Java内存溢出与栈溢出
  20. 怎么将flac转换成mp3

热门文章

  1. dx使用出现的错误总结
  2. R 包 optparse 之命令行参数传递
  3. 在线作图|在线做随机森林分析
  4. QIIME 2教程. 31名词Glossary(2020.11)
  5. NC:植物与根际微生物之间的通路被破解,通过合成生物学利用微生物固氮!...
  6. 求求你使用Tab键好吗
  7. Microbiome综述|植物内部微生物的相互作用
  8. 中国科学7月微生物组专刊:赵立平、秦楠、东秀珠领衔
  9. Annu. Rev. Genet:植物微生物组——系统性见解与展望
  10. R语言ggplot2可视化分面图使用facet_wrap函数和facet_grid函数实战