ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

.MET Core RSA加密解密

2022-01-13 10:00:07  阅读:190  来源: 互联网

标签:XML Core Console RsaKeyConvert RSA MET WriteLine var Pkcs1


RSA加密解密

Nuget 引入 XC.RSAUtil

博客园参考文章1

生成公私钥对

// 生成公私钥对
// XML
Console.WriteLine(RsaKeyGenerator.XmlKey(2048)[0]);
Console.WriteLine("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
Console.WriteLine(RsaKeyGenerator.XmlKey(2048)[1]);
Console.WriteLine("================================================================================");
// Pkcs1
Console.WriteLine(RsaKeyGenerator.Pkcs1Key(2048, true)[0]);
Console.WriteLine("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
Console.WriteLine(RsaKeyGenerator.Pkcs1Key(2048, true)[1]);
Console.WriteLine("================================================================================");
// Pkcs8
Console.WriteLine(RsaKeyGenerator.Pkcs8Key(2048, true)[0]);
Console.WriteLine("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
Console.WriteLine(RsaKeyGenerator.Pkcs8Key(2048, true)[1]);

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

/// <summary>
/// RSA 加密,解密,签名和验签
/// </summary>
public static void RSASignFunc(string privateKey, string publicKey, EnumUserType enumUserType)
{
    Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
    switch (enumUserType)
    {
        case EnumUserType.xml:
            RsaXmlUtil rsaXmlUtil = new RsaXmlUtil(Encoding.UTF8, publicKey, privateKey);
            var encrypt = rsaXmlUtil.Encrypt("123456789", RSAEncryptionPadding.Pkcs1);
            var encryptInput = rsaXmlUtil.Decrypt(encrypt, RSAEncryptionPadding.Pkcs1);
            Console.Write("XML加解密是否成功:");
            Console.WriteLine(encryptInput is "123456789");
            var sign = rsaXmlUtil.SignData("987654321", HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1);
            var verifyData = rsaXmlUtil.VerifyData("987654321", sign, HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1);
            Console.Write("XML签名是否成功");
            Console.WriteLine(verifyData);
            break;
        case EnumUserType.pkcs1:
            RsaPkcs1Util rsaPkcs1Util = new RsaPkcs1Util(Encoding.UTF8, publicKey, privateKey);
            var encrypt2 = rsaPkcs1Util.Encrypt("123456789", RSAEncryptionPadding.Pkcs1);
            var encryptInput2 = rsaPkcs1Util.Decrypt(encrypt2, RSAEncryptionPadding.Pkcs1);
            Console.Write("PKCS1加解密是否成功:");
            Console.WriteLine(encryptInput2 is "123456789");
            var sign2 = rsaPkcs1Util.SignData("987654321", HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1);
            var verifyData2 = rsaPkcs1Util.VerifyData("987654321", sign2, HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1);
            Console.Write("PKCS1签名是否成功");
            Console.WriteLine(verifyData2);
            break;
        default:
            RsaPkcs8Util rsaPkcs8Util = new RsaPkcs8Util(Encoding.UTF8, publicKey, privateKey);
            var encrypt3 = rsaPkcs8Util.Encrypt("123456789", RSAEncryptionPadding.Pkcs1);
            var encryptInput3 = rsaPkcs8Util.Decrypt(encrypt3, RSAEncryptionPadding.Pkcs1);
            Console.Write("PKCS8加解密是否成功:");
            Console.WriteLine(encryptInput3 is "123456789");
            var sign3 = rsaPkcs8Util.SignData("987654321", HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1);
            var verifyData3 = rsaPkcs8Util.VerifyData("987654321", sign3, HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1);
            Console.Write("PKCS8签名是否成功");
            Console.WriteLine(verifyData3);
            break;
    }
}

RSA密钥转换

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,Core,Console,RsaKeyConvert,RSA,MET,WriteLine,var,Pkcs1
来源: https://www.cnblogs.com/ainghub/p/15796392.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有