zoukankan      html  css  js  c++  java
  • .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];
    

    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
    
  • 相关阅读:
    第四代Express框架koa简介
    用Python实现定时自动化收取蚂蚁森林能量,再也不用担心忘记收取了
    TMS320C6678开发环境搭建:系统调试工具SecureCRT安装
    ESP8266 WiFi模块如何联网?
    C 语言简单编程速成
    【算法】二分搜索方法
    零拷贝
    paxos raft zab
    NIO Java API
    Linux安装redis和部署
  • 原文地址:https://www.cnblogs.com/stulzq/p/8260873.html
Copyright © 2011-2022 走看看