您的位置:首页 > Web前端 > JavaScript

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

2018-01-10 21:28 671 查看
众所周知在.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()


其他说明

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

为了方便使用已经上传Nuget:https://www.nuget.org/packages/XC.Framework.Security.RSAUtil/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: