NetCore 生成RSA公私钥对,公钥加密私钥解密,私钥加密公钥解密
using Newtonsoft.Json; using Org.BouncyCastle.Crypto; using Org.BouncyCastle.Crypto.Encodings; using Org.BouncyCastle.Crypto.Engines; using Org.BouncyCastle.Crypto.Generators; using Org.BouncyCastle.OpenSsl; using Org.BouncyCastle.Pkcs; using Org.BouncyCastle.Security; using Org.BouncyCastle.X509; using System; using System.IO; using System.Text; namespace ConsoleAppTest { class Program { //自己生成 static string _publicKeyString = @"-----BEGIN PUBLIC KEY----- MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAmu5B+WIU9ZK+uy11qmdj KygwcH6r8YOui2jc87pWShKAEnEE2Q81twgQ4KGFylodpNsXs+EGeQA8HUiDKK11 Pm6AMzrqHQ8rtNNWbQA6Ca+BJJHEoyrizaHTGLWU7oHe9TcRQ8Iq5vihF74x1jD2 BHXpgR6KUhx9DUMFgdwpLXhZ2EgG85eOuajcHl+tLN52bEpGwSHyL5iWuX2U5qfN Ln3h/lCmdktPwCjVVyaoLALxP0oDtalRwLKRJuD91p6YxrAeN3eRkGWoYXH5bSrS BR+5id5yBplxayVrozJXFpOFySTrCHD2snnfjmn39dKsRjwRjKG/zKUPO54GPovv rODK32c1xiKpQQ7XAzyXPNij3MWPJFu6z24eNdILm4wF1jFWQlrsca0znpjoAVFY e1yp1lXAtYlxgNURMQ2RwvBtnT3BUhUP382GYd0XPdV1xodOaJVf8ce3YImrGaAY jPjbTPTbTyzwcHyc1LHwYw4W7aYiTyX8p5+7PkdkRr8uiKA9iFhH6iq+7MPv5O0F NGSktGZkyFSKg9vazQmESlUC+blC2yQRBJsqV84weMKGCURg3jxetTfENHJ8N+H9 pnacvRjl5O5cZjECOi4XrGAUd4bvqKBfZ1OnB1htWGEjPyGhKzmAG8vzf0GVtAK8 8qhuYM7FceTYJsqUnzFnEHUCAwEAAQ== -----END PUBLIC KEY-----"; static string _privateKeyString = @"-----BEGIN RSA PRIVATE KEY----- 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 -----END RSA PRIVATE KEY-----"; //网站生成 static string _publicKeyStringWeb = @"-----BEGIN PUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCPNZe67AfIs2rFWLp5HZ6y8VG/ ybhhE0Q9WmkdnPXFGSN9j3M8Uglmh78MCfawm9goHnvMl5c8ta2dDnKZi+WWuZ6D K+OOS/kBgR9cLMci+9bI7NA8/spxbVBbKDlgyRWPle65Nm7foX3OamNJe6uoMaLL Y/jWSdwxPsp1jp8GJwIDAQAB -----END PUBLIC KEY-----"; static string _privateKeyStringWeb = @"-----BEGIN RSA PRIVATE KEY----- Proc-Type: 4,ENCRYPTED DEK-Info: DES-EDE3-CBC,EF30E5A772A723B5 8DS2obJNGC9M2GJuxID6mZV5p4k+oxgv1fEILJ+CwpzJ0lAGspDiqLgxSKmETZiE ct9zCkEEABTarhBspC1i4O4np4nO+z40iTvDwu88bDMvWvEV2EYYaJn9ZelJZ51y KHEJw4fncvZN8ULNBZ7Fnn9Y6+pLW6IJrSHTL7TrN1gi257LAX5xUgHvNqet4XMl UKoX0DmDZkCFdnn3a/DQUA4au8rrotsU/ihBDFMMGljA/QKPApnuy07+KyXtaDx6 YlBMifqbsuYLOvNMT9aqbAPp5OFdykTnfPRPnx9xHuTqXE8NfInYvSMkcC8lpUrt M8wsCVaRukliBOSyNYxyqMZwBJMXrY9+lyZMi6/g6450HJ0NBOC8/mc5Gj8nD6L6 tjkkFyS/t4aU7lZWqh4oMRHPwDQqrgSZB13lBveXVSoTpVOzvgV2vEC6p9s+IGIC +WpNRq55zWtj8EsZly/p91NlrHujDQsEyrkUDUE3xjon66vQow9jRwYngA0VWeL8 dO9XN/srJ4jQB4I/wx9X7MfDJzVF/RrHT42QVfeqsPx071TJAd3+GqJS0+B1FaS8 PoTCY4yor2ViTOS/NfZEs0SyC1U9t41FTIEnfnZVqEF54Hy3l8kCrTjVc2Vm2HAG /DAzGgbdOV8KJKdWFpc5+aQde5j2xxd4LwF8kKTSLaRonVMhBJ4LBLPn9NsdU7vw MyFyLnHb4qsilAC3P2Ui8MJP2kJsqO1ho3V9ITG8IzxiZmpLLL1D8GAJoaDtDxhu MtQZQpgpuW7CaVItZrxrmBbdMXpGW/GkOhySZVI0au04GfPHQtssAQ== -----END RSA PRIVATE KEY-----"; static string _encryptedWithPublicStr = @"N+sAvcN+AveMeY1oehXHNMj4PAlLhNRSXgUrcTXLlOlezFyM2UwvSEXNchVs0r5aMYgn2gAX1ofOkXGzywvoaju2qDjcdZIV4WYlhR6RI0PEueootTRnQoJCNKnOaCQ2YZsXys5crm6xRMsFM7QcKKxjUWeg41Q8u5pjZOM3PtdoF+AZwweieNEJrWSsvGAKXfDol9R5fCJ2s51G5/6q+3U9wR8kWcZl7cpmdSJUWg2GSHcKVda6cJ2Ojr44wDLfiBTUz72dzDlZHJowHQc3s8+GYx6rIYQyghxYdiHfDPtQdOtPxdKaJajk+bJOyuEicYuW0j7CwV/+zD7XPoDkoNMbp6oikCBmU1d+zmWsfg4lySwPe++2irjJmCLaOeRHzvXdkfnUhWCzjfxPGSEE+feSMEvDbTAvXbhvtC7zguJBpy2eyQM+n0wtkXrsYOxBldVOT3M1CAKHEdBecoV7xxLPlrpnxpgf2jsWMdfRwXYVpaXacVQuAwe8MLCexlLEPusAAFMnp3DpBO4gbCQCRoAKJTN7MyJfKmeOLAKHR6M+NuO5+AZ2Z2sj06u9SNcYuKm5Jgl3NIDzTrVfNbFjaDqFLzWpHiv1JS20D21gUocycDAVLw09U3aAz5KzBpbPQ2knqslgnBi1116xKzCOEhqB6mMNuoVPrDUr2eIFuns="; static string _encryptedWithPrivateStr = @"dkOvosyTPPOrAglholTHEqu/RoyQv1Ih7qy/SsuxjoO92ZpL4alNhso6snPyooZmOBP/ljb91BEXaaqqaLneYzvlvEAqJPKXyOvYFREhcwLXCE9dIbn0NPs7srRETd0JqeQFyRv6qGvoA2aXg4Fxch7cANqpKY03eb3htuqTTranAZsPT3SYZPKOxK4wgfU/63wDBCWEO0SeNga86QgLpfcQ0DRukqNVr64lDt2QddUqeKxbnAJM2u2xpwnGayFDKP03BjV6rXnId7NlkgkoqZw3SpyOg5HOe/4tTbRQ4gjH6N5Q4VnyFGehOw3SH/KNWT/KaE2anI9vWCZHy0ia8mxiBKH0vuJl3WEoR1JPFmhSrbcemrWpgc0a8r6CJQRMefYw18z3AuHRu3vAOPEtS9bXaySpQ0PLjS/pxG3Y1MTZLQPBvCcY77Ghr35UNJ2Z8XIbiwt9dqs0Az7y6ARj2qyz+96ZQkstrDJw4OikZj0w6olHoL9WQ2b04S7wz6GE87/5AS3hphZJNwFpvHxaUWTRYf+N2r9GrjM3nplYqBAQwz1XI65qhQL4PBK7/4HTgkVBDNRsJNHOJp5Uq4+UtZYwgwLOjxhBG5dlLJMCbZvABqE8e4gRLDv8wfBiC8qS4CxhOz3HuxW+KdZFkEG9Qajf/hxEzwUoxf+mLagdp1U="; static string _encryptedWithPublicWebStr = @"KRC9OJ3R981IsvBJ33Z9eDJHgg5+EOcnh95yZA1HDPeOnn7+s7n7TH4yyIOVAS677bESftzcNfhyCCrDVb7GkRBTu3UgMlkl/KlkC4a8yS2skks5TwYkjPmr2I31PCZzg9JuH0eo3S4oXzqg9NVhgW37kUgRjjbH489XFYeUQEM="; static string _encryptedWithPrivateWebStr = @"i8lGOft4QH781r5+GUuzp3zEjmmpyw3N7qjj6wKH6LRjxzzCwxJqyewztmosrO9aJt/0LEew5wMSt/xWjrHNiaiAdxnI0UX7i7TZWNASXe1Sie/+36egYfu5x4BctIh2NPP3c6HixVJzQ2I5vtuKK2UPEw8yu5kH3p7+Ifp7CbU="; static void Main(string[] args) { Console.WriteLine("Hello World!"); //var jsonStr = JsonConvert.SerializeObject(new Test { Name = "塞尔达荒野之息" }); //var jsonByte = Convert.ToByte(jsonStr); //Console.WriteLine(jsonStr); //GenRSAKeyPair("xjl"); //RsaEncryptWithPublic("yahaha"); //RsaEncryptWithPrivate("link"); string encryptedTxt = RsaEncryptWithPublic(new Test { Name = "喷射战士2haha" }); //RsaDecryptWithPrivate(_encryptedWithPublicStr); RsaDecryptWithPrivate(encryptedTxt); //RsaEncryptWithPrivate(new Test { Name = "odessey" }); //RsaDecryptWithPublic(_encryptedWithPrivateStr); Console.ReadLine(); } public static void GenRSAKeyPair(string name) { var generator = new RsaKeyPairGenerator(); var seed = Encoding.UTF8.GetBytes(name); var secureRandom = new SecureRandom(); secureRandom.SetSeed(seed); generator.Init()); var pair = generator.GenerateKeyPair(); //第一种方案 //var privateKeyInfo = PrivateKeyInfoFactory.CreatePrivateKeyInfo(pair.Private); //var serializedPrivateBytes = privateKeyInfo.ToAsn1Object().GetDerEncoded(); //var serializedPrivate = Convert.ToBase64String(serializedPrivateBytes); //Console.WriteLine("Private Key:" + serializedPrivate); //var publickKeyInfo = SubjectPublicKeyInfoFactory.CreateSubjectPublicKeyInfo(pair.Public); //var serializedPublicBytes = publickKeyInfo.ToAsn1Object().GetDerEncoded(); //var serializedPublic = Convert.ToBase64String(serializedPublicBytes); //Console.WriteLine("Public Key:" + serializedPublic); //第二种方案 var twPrivate = new StringWriter(); PemWriter pwPrivate = new PemWriter(twPrivate); pwPrivate.WriteObject(pair.Private); pwPrivate.Writer.Flush(); var privateKey = twPrivate.ToString(); Console.WriteLine("Private Key:" + privateKey); var twPublic = new StringWriter(); PemWriter pwPublic = new PemWriter(twPublic); pwPublic.WriteObject(pair.Public); pwPublic.Writer.Flush(); var publicKey = twPublic.ToString(); Console.WriteLine("Public Key:" + publicKey); } /// <summary> /// 公钥加密 /// </summary> /// <param name="dataToEncrypt">待加密文本</param> //public static void RsaEncryptWithPublic(string dataToEncrypt) public static string RsaEncryptWithPublic(Test dataToEncrypt) { var bytesToEncrypt = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(dataToEncrypt)); var encryptEngine = new Pkcs1Encoding(new RsaEngine()); using (var txtReader = new StringReader(_publicKeyString)) { var keyParameter = (AsymmetricKeyParameter)new PemReader(txtReader).ReadObject(); encryptEngine.Init(true, keyParameter); } , bytesToEncrypt.Length)); // 获取publickKey对应的keyParameter的第一种方法 //var stringReader = new StringReader(_publicKeyString); //var pemReader = new Org.BouncyCastle.OpenSsl.PemReader(stringReader); //var keyParameter = (AsymmetricKeyParameter)pemReader.ReadObject(); // 获取publickKey对应的keyparameter的第二种方法 //var publicKey = Convert.FromBase64String(_publicKeyString); //var keyParameter = PublicKeyFactory.CreateKey(publicKey); //用公钥加密的第一种方法 //var engine = new RsaEngine(); //engine.Init(true, keyParamter); //var blockSize = engine.GetInputBlockSize(); //return engine.ProcessBlock(data, 0, blockSize); //用公钥加密的第二种方法 //IBufferedCipher cipher = CipherUtilities.GetCipher("RSA/ECB/PKCS1Padding"); //cipher.Init(true, keyParameter); //var encryptedText = Convert.ToBase64String(cipher.DoFinal(bytesToEncrypt)); Console.WriteLine("利用公钥加密后的数据:" + encryptedText); return encryptedText; } /// <summary> /// 私钥加密 /// </summary> /// <param name="dataToEncrypt">待加密文本</param> //public static void RsaEncryptWithPrivate(string dataToEncrypt) public static void RsaEncryptWithPrivate(Test dataToEncrypt) { var bytesToEncrypt = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(dataToEncrypt)); var encryptEngine = new Pkcs1Encoding(new RsaEngine()); using (var txtReader = new StringReader(_privateKeyString)) { var keyPair = (AsymmetricCipherKeyPair)new PemReader(txtReader,new PasswordFinder("xjl")).ReadObject(); encryptEngine.Init(true, keyPair.Private); } , bytesToEncrypt.Length)); Console.WriteLine("利用私钥加密后的数据:" + encryptedText); } public class Test { public string Name { get; set; } } /// <summary> /// 私钥解密 /// </summary> /// <param name="dataToDecrypt">待解密的数据</param> public static void RsaDecryptWithPrivate(string dataToDecrypt) { var bytesToDecrypt = Convert.FromBase64String(dataToDecrypt); // 获取privatekey对应的keyparameter的第一种方法 var stringReader = new StringReader(_privateKeyString); //var pemReader = new Org.BouncyCastle.Utilities.IO.Pem.PemReader(stringReader); var pemReader = new PemReader(stringReader, new PasswordFinder("xjl")); var keyPair = (AsymmetricCipherKeyPair)pemReader.ReadObject(); var keyParameter = keyPair.Private; // 获取privatekey对应的keyparameter的第二种方法 //var publicKey = Convert.FromBase64String(_publicKeyString); //var keyParameter = PublicKeyFactory.CreateKey(publicKey); // 用私钥解密的第一种方法 //var engine = new RsaEngine(); //engine.Init(false, keyParameter); //var blockSize = engine.GetInputBlockSize(); //engine.ProcessBlock(dataToDecrypt, 0, blockSize); // 用私钥解密的第二种方法 IBufferedCipher cipher = CipherUtilities.GetCipher("RSA/ECB/PKCS1Padding"); cipher.Init(false, keyParameter); var decipheredBytes = cipher.DoFinal(bytesToDecrypt); var decipheredText = Encoding.UTF8.GetString(decipheredBytes); Console.WriteLine("用私钥解密后的数据:" + decipheredText); } /// <summary> /// 公钥解密 /// </summary> /// <param name="dataToDecrypt">待解密的数据</param> public static void RsaDecryptWithPublic(string dataToDecrypt) { var bytesToDecrypt = Convert.FromBase64String(dataToDecrypt); // 获取privatekey对应的keyparameter的第一种方法 var stringReader = new StringReader(_publicKeyString); //var pemReader = new Org.BouncyCastle.Utilities.IO.Pem.PemReader(stringReader); var pemReader = new PemReader(stringReader); var keyParameter = (AsymmetricKeyParameter)pemReader.ReadObject(); // 获取privatekey对应的keyparameter的第二种方法 //var publicKey = Convert.FromBase64String(_publicKeyString); //var keyParameter = PublicKeyFactory.CreateKey(publicKey); // 用私钥解密的第一种方法 //var engine = new RsaEngine(); //engine.Init(false, keyParameter); //var blockSize = engine.GetInputBlockSize(); //engine.ProcessBlock(dataToDecrypt, 0, blockSize); // 用私钥解密的第二种方法 IBufferedCipher cipher = CipherUtilities.GetCipher("RSA/ECB/PKCS1Padding"); cipher.Init(false, keyParameter); var decipheredBytes = cipher.DoFinal(bytesToDecrypt); var decipheredText = Encoding.UTF8.GetString(decipheredBytes); Console.WriteLine("用公钥解密后的数据:" + decipheredText); } } }
NetCore 生成RSA公私钥对,公钥加密私钥解密,私钥加密公钥解密的更多相关文章
- Openssl生成RSA公私钥以及将公钥转换成C#支持的格式
Openssl生成RSA公私钥以及将公钥转换成C#支持的格式 1.RSA算法介绍 RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密.RSA ...
- java生成RSA公私钥字符串,简单易懂
java生成RSA公私钥字符串,简单易懂 解决方法: 1.下载bcprov-jdk16-140.jar包,参考:http://www.yayihouse.com/yayishuwu/chapter ...
- RSA不对称加密,公钥加密私钥解密,私钥加密公钥解密
RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作. RSA是被研究得最广泛的公钥算法,从提出到现在已近二十年,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一 ...
- RSA 加密算法 Java 公钥加密私钥解密 和 私钥加密公钥解密 的特点
package com.smt.cipher.unsymmetry; import org.apache.commons.codec.binary.Base64; import org.apache. ...
- C# 基于大整数类的RSA算法实现(公钥加密私钥解密,私钥加密公钥解密)
但是C#自带的RSA算法类RSACryptoServiceProvider只支持公钥加密私钥解密,即数字证书的使用. 所以参考了一些网上的资料写了一个RSA的算法实现.算法实现是基于网上提供的一个大整 ...
- 基于私钥加密公钥解密的RSA算法C#实现
RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作. RSA是被研究得最广泛的公钥算法,从提出到现在已近二十年,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一 ...
- 求求你们不要再用 RSA 私钥加密公钥解密了,这非常不安全!
最近经常在网上看到有人说巨硬的 CNG(Cryptography Next Generation 即下一代加密技术) 只提供 RSA 公钥加密私钥解密,没有提供 RSA 私钥加密公钥解密,他们要自己封 ...
- 银联手机支付(.Net Csharp),3DES加密解密,RSA加密解密,RSA私钥加密公钥解密,.Net RSA 3DES C#
前段时间做的银联支付,折腾了好久,拼凑的一些代码,有需要的朋友可以参考,本人.Net新手,不保证准确性! 这个银联手机支付没有SDK提供,技术支持也没有.Net的,真心不好搞! RSA加解密,这里有个 ...
- golang 私钥"加密"公钥"解密"
---恢复内容开始--- 之前工作主要使用C/C++与银行/第三方支付对接,但C/C++无法满足客户"当天给协议明天实盘上载"的开发速度以及现公司一些特殊情况,所以决定用go来 ...
随机推荐
- MySQL5.7 锁定用户【转】
使用ALTER USER 语句锁定 mysql>ALTER USER 'demo'@'localhost' ACCOUNT LOCK; Query OK, rows affected (0.00 ...
- 左侧滚动条js
<script> var left = document.getElementById('main-left'); var right = document.getElementById( ...
- MySQL数据库的一些方法使用
substring_index(windSpeed,)/3.6 as windSpeed 可将 .8公里.0m/s 进行拆分 嵌套使用replace方法 replace( replace( repla ...
- C语言实现程序跳转到绝对地址0x100000处执行
嵌入式笔试题:想让程序跳转到绝对地址0x100000处执行,该如何做? 请详细解释一下所给的答案: 网上看到有如下答案: *((void(*)(void))0x100000)(); 经过在VC++6. ...
- python学习第天14天。
模块 什么是模块 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1 使用python编写的代码( ...
- php正则替换函数-----preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )
preg_replace — 执行一个正则表达式的搜索和替换 说明 mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $ ...
- ant自动编译打包android项目
源代码及可执行文件下载地址:http://files.cnblogs.com/rainboy2010/antdemo.zip Android打包APK的流程如下: 下面我们开始尝试使用ant进行ap ...
- CentOS7.5从零安装Python3.6.6
ps:环境如标题 安装可能需要的依赖 yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlit ...
- Python中加入中文注释
最近开发学习Pyton,当加入中文注释时,运行程序报错: File SyntaxError: Non-ASCII character , but no encoding declared; see h ...
- Confluence 6 隐藏人员目录
人员目录提供了你 Confluence 中所有用户的列表. 如果你希望禁用人员目录,请在你应用程序命令行中的 Configuring System Properties 进行设置. 希望为匿名用户禁用 ...