C# 调用BouncyCastle生成PEM格式的私钥和公钥 , 加密解密 PKCS#1
2018-03-29 11:31
751 查看
引用第三方类库 BouncyCastle
nuget: https://www.nuget.org/packages/BouncyCastle
网址: http://www.bouncycastle.org/csharp/index.html 1.生成 pem 私钥TextWriter textWriter = new StringWriter();
PemWriter pemWriter = new PemWriter(textWriter);
pemWriter.WriteObject(keys.Private);
pemWriter.Writer.Flush();
string privateKey = textWriter.ToString();//公钥 TextWriter textpubWriter = new StringWriter();
PemWriter pempubWriter = new PemWriter(textpubWriter);
pempubWriter.WriteObject(keys.Public);
pempubWriter.Writer.Flush();
string pubKey = textpubWriter.ToString();生成结果
公钥:-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCDzNqPhq2nk1aIsIK30X7UAHC5
jNqVKk12ZxsVEOjPFajV82VuJ7a31uLtU3NWRN4SIzhXmhAiptiDXq04AReV6veh
3xdI069xmsIx/EEJNHnL034is6gSVev8p7wJ+qevxdYUGaMVgAV6osYAeQhMTTld
emiiriKVAoeezhs5fQIDAQAB
-----END PUBLIC KEY-----私钥-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQCDzNqPhq2nk1aIsIK30X7UAHC5jNqVKk12ZxsVEOjPFajV82Vu
J7a31uLtU3NWRN4SIzhXmhAiptiDXq04AReV6veh3xdI069xmsIx/EEJNHnL034i
s6gSVev8p7wJ+qevxdYUGaMVgAV6osYAeQhMTTldemiiriKVAoeezhs5fQIDAQAB
AoGAC5l5psx1Xg+WiKmLZ5gb1f0P7q4zbCtXILnxGG9VJFySPMb5QOX+RVTqwqfn
uUqOuZpSuOSWa1mAKdepEQoixCIBTbG8THhbXi5/vdN4FMUXmHBe1Gage0HFE5Ep
EMGpFuGZW9PmXG5m78gkTwc/cYJYWSA6I9AMWJ8rBGfti/UCQQC9ehPq0wFV8icL
qcW3HlNsPzpqKPWFKp9UWz8kB6ayyTX9pci02Rp4Fig3i625+eMnJ+Kq0DRVGeJE
4auCugb7AkEAshLgdDxnvQVbPFJvxF8yAZe3Tu4L2vbEA55wqnEdHMUSnHERXO72
9Uk1t2n5v67xIksGewyZ0X6x/7wbsg035wJAR+0FjoiW4zdPFyBVS5QZeuftlssB
mJF7dhxFNbopz4iOFEFQlUYsxBU1IxDE2+o+DmkXpFvw4bU3rYo0/yT67QJAQcpR
nQA4P5C8DYRTgNS+7/Gyqvmt7Z8f+kpOS9pwrBFvd9caWCB9o1ACBZqkyBoFQus/
ILUeG1VYxCgmf1j83wJBAK1ETGDQM9LPOZAtB7Idv1Xo4sJtDn90yIyjhJjE6hhA
pvGGRb/1aOB1DMrx3JweIUB7rKMpkGVcouFIO4/s9cU=
-----END RSA PRIVATE KEY-----2. 使用pem 证书解密或解密. 公钥私钥类型不一样
使用公钥加解密:
c#.net 调用BouncyCastle生成PEM格式的私钥和公钥 https://www.cnblogs.com/runliuv/p/5965951.html
nuget: https://www.nuget.org/packages/BouncyCastle
网址: http://www.bouncycastle.org/csharp/index.html 1.生成 pem 私钥TextWriter textWriter = new StringWriter();
PemWriter pemWriter = new PemWriter(textWriter);
pemWriter.WriteObject(keys.Private);
pemWriter.Writer.Flush();
string privateKey = textWriter.ToString();//公钥 TextWriter textpubWriter = new StringWriter();
PemWriter pempubWriter = new PemWriter(textpubWriter);
pempubWriter.WriteObject(keys.Public);
pempubWriter.Writer.Flush();
string pubKey = textpubWriter.ToString();生成结果
公钥:-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCDzNqPhq2nk1aIsIK30X7UAHC5
jNqVKk12ZxsVEOjPFajV82VuJ7a31uLtU3NWRN4SIzhXmhAiptiDXq04AReV6veh
3xdI069xmsIx/EEJNHnL034is6gSVev8p7wJ+qevxdYUGaMVgAV6osYAeQhMTTld
emiiriKVAoeezhs5fQIDAQAB
-----END PUBLIC KEY-----私钥-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQCDzNqPhq2nk1aIsIK30X7UAHC5jNqVKk12ZxsVEOjPFajV82Vu
J7a31uLtU3NWRN4SIzhXmhAiptiDXq04AReV6veh3xdI069xmsIx/EEJNHnL034i
s6gSVev8p7wJ+qevxdYUGaMVgAV6osYAeQhMTTldemiiriKVAoeezhs5fQIDAQAB
AoGAC5l5psx1Xg+WiKmLZ5gb1f0P7q4zbCtXILnxGG9VJFySPMb5QOX+RVTqwqfn
uUqOuZpSuOSWa1mAKdepEQoixCIBTbG8THhbXi5/vdN4FMUXmHBe1Gage0HFE5Ep
EMGpFuGZW9PmXG5m78gkTwc/cYJYWSA6I9AMWJ8rBGfti/UCQQC9ehPq0wFV8icL
qcW3HlNsPzpqKPWFKp9UWz8kB6ayyTX9pci02Rp4Fig3i625+eMnJ+Kq0DRVGeJE
4auCugb7AkEAshLgdDxnvQVbPFJvxF8yAZe3Tu4L2vbEA55wqnEdHMUSnHERXO72
9Uk1t2n5v67xIksGewyZ0X6x/7wbsg035wJAR+0FjoiW4zdPFyBVS5QZeuftlssB
mJF7dhxFNbopz4iOFEFQlUYsxBU1IxDE2+o+DmkXpFvw4bU3rYo0/yT67QJAQcpR
nQA4P5C8DYRTgNS+7/Gyqvmt7Z8f+kpOS9pwrBFvd9caWCB9o1ACBZqkyBoFQus/
ILUeG1VYxCgmf1j83wJBAK1ETGDQM9LPOZAtB7Idv1Xo4sJtDn90yIyjhJjE6hhA
pvGGRb/1aOB1DMrx3JweIUB7rKMpkGVcouFIO4/s9cU=
-----END RSA PRIVATE KEY-----2. 使用pem 证书解密或解密. 公钥私钥类型不一样
使用公钥加解密:
using (TextReader reader = new StringReader(pubkeyPemString})) { var enType=true; //加密true 解密 false; var key = new Org.BouncyCastle.OpenSsl.PemReader(reader).ReadObject() as AsymmetricKeyParameter; var rsa = new RsaEngine(); rsa.Init(enType, key); var data = Encoding.UTF8.GetBytes(tb_input.Text); entData = rsa.ProcessBlock(data, 0, data.Length); tb_output.Text = "加密: \r\n\r\n" + Encoding.UTF8.GetString(entData); }使用 私钥加解密: 私钥中带有公钥信息.解析出来的是密钥对AsymmetricCipherKeyPair
using (TextReader reader2 = new StringReader(tb_privitekey.Text)) { dynamic key = new Org.BouncyCastle.OpenSsl.PemReader(reader2).ReadObject(); var rsa2 = new RsaEngine(); if (key is AsymmetricKeyParameter) { key = (AsymmetricKeyParameter)key; } else if(key is AsymmetricCipherKeyPair) { key = ((AsymmetricCipherKeyPair)key).Private; } rsa2.Init(false, key); //加密true 解密 false //entData 待加密解密的 串 byte[] entData= Encoding.UTF8.GetBytes(tb_input.Text); entData = rsa2.ProcessBlock(entData, 0, entData.Length); tb_output.Text += "解密:\r\n \r\n" + Encoding.UTF8.GetString(entData); }参考文章:
c#.net 调用BouncyCastle生成PEM格式的私钥和公钥 https://www.cnblogs.com/runliuv/p/5965951.html
相关文章推荐
- c#.net 调用BouncyCastle生成PEM格式的私钥和公钥
- C# RSA加密、解密、加签、验签、支持JAVA格式公钥私钥、PEM格式公钥私钥、.NET格式公钥私钥、一般模式【支持公钥加密,私钥解密】(一)
- C# RSA加密、解密、加签、验签、支持JAVA格式公钥私钥、PEM格式公钥私钥、.NET格式公钥私钥 -变态模式【支持私钥加密,公钥解密】(二)
- C# 与JAVA 的RSA 加密解密交互,互通,C#使用BouncyCastle来实现私钥加密,公钥解密的方法
- c# RSA 加密解密 java.net公钥私钥转换 要解密的模块大于128字节
- Druid生成的公钥私钥来对密码进行加密解密
- 整合一个基于c#的RSA私钥加密公钥解密的Helper类,含源码
- .NET生成RSA公钥和私钥-加密解密示例
- 整合一个基于c#的RSA私钥加密公钥解密的Helper类,含源码
- RSA私钥和公钥文件格式 (pkcs#1, pkcs#8, pkcs#12, pem)
- 用RSA算法生成公钥私钥对,并加密解密文件内容
- C# 基于大整数类的RSA算法实现(公钥加密私钥解密,私钥加密公钥解密)
- C# 中使用 OpenSSL 的公钥/私钥进行加密和解密
- NetCore 生成RSA公私钥对,公钥加密私钥解密,私钥加密公钥解密
- 使用openssl生成PEM格式私钥和公钥及ECDSA签名
- 整合一个基于c#的RSA私钥加密公钥解密的Helper类,含源码
- C#使用RSA进行私钥加密公钥解密
- RSA,JAVA私钥加密,C#公钥解密
- C# 基于大整数类的RSA算法实现(公钥加密私钥解密,私钥加密公钥解密)
- C#使用RSA私钥加密公钥解密的改进,解决特定情况下解密后出现乱码的问题