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

众所周知在.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];

a5e7251a687dd8e3032b0ff390211d87.png

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分别对应类:RsaXmlUtilRsaPkcs1UtilRsaPkcs8Util。它们继承自抽象类RSAUtilBase

  • 加密:RSAUtilBase.Encrypt()

  • 解密:RSAUtilBase.Decrypt()

  • Sign:RSAUtilBase.SignData()

  • 验证:RSAUtilBase.VerifyData()

PEM格式化

使用类“RsaPemFormatHelper”。

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

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

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

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

其他说明

本项目已开源,如果对您有帮助,欢迎来个star:https://github.com/stulzq/RSAUtil

为了方便使用已经上传Nuget:https://www.nuget.org/packages/XC.RSAUtil/

直接使用命令安装:

Install-Package XC.RSAUtil

原文地址:https://www.cnblogs.com/kevin860/p/9557833.html

.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com 52e3237bca4fcfe7a88d75d0f042c71a.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值