c#.net 调用BouncyCastle生成PEM格式的私钥和公钥
2016-10-16 09:24
691 查看
RsaKeyPairGenerator r = new RsaKeyPairGenerator(); r.Init(new KeyGenerationParameters(new SecureRandom(), 1024)); AsymmetricCipherKeyPair keys = r.GenerateKeyPair(); AsymmetricKeyParameter private_key = keys.Private; AsymmetricKeyParameter public_key = keys.Public; TextWriter textWriter = new StringWriter(); PemWriter pemWriter = new PemWriter(textWriter); pemWriter.WriteObject(keys.Private); pemWriter.Writer.Flush(); string privateKey = textWriter.ToString(); txtPri.Text = privateKey; TextWriter textpubWriter = new StringWriter(); PemWriter pempubWriter = new PemWriter(textpubWriter); pempubWriter.WriteObject(keys.Public); pempubWriter.Writer.Flush(); string pubKey = textpubWriter.ToString(); txtPub.Text = pubKey;
-
引用:
using Org.BouncyCastle.Crypto; using Org.BouncyCastle.Crypto.Generators; using Org.BouncyCastle.OpenSsl; using Org.BouncyCastle.Security;
--XML格式转PEM格式,引用:http://www.jianshu.com/p/faefcc58c79b
public static void XMLConvertToPEM()//XML格式密钥转PEM { var rsa2 = new RSACryptoServiceProvider(); using (var sr = new StreamReader("e:\\PrivateKey.xml")) { rsa2.FromXmlString(sr.ReadToEnd()); } var p = rsa2.ExportParameters(true); var key = new RsaPrivateCrtKeyParameters( new BigInteger(1, p.Modulus), new BigInteger(1, p.Exponent), new BigInteger(1, p.D), new BigInteger(1, p.P), new BigInteger(1, p.Q), new BigInteger(1, p.DP), new BigInteger(1, p.DQ), new BigInteger(1, p.InverseQ)); using (var sw = new StreamWriter("e:\\PrivateKey.pem")) { var pemWriter = new Org.BouncyCastle.OpenSsl.PemWriter(sw); pemWriter.WriteObject(key); } }
网上示例都是从文件读取出XML格式私钥,存入PEM文件中,PEM中就是转换好的格式。
读取XML私钥的代码可以换成生成XML私钥,以下代码是转好格式存入字符串string 中。
public void xmlToPem() { CspParameters parameters = new CspParameters(); parameters.KeyContainerName = DateTime.Now.ToString(); //可以选择导入XML格式的私钥还是生成。无论是存储在.XML文件中还是在数据库等地方。 这里是新生成一个C# XML格式私钥来转成PEM格式。 var rsa2 = new RSACryptoServiceProvider(parameters); //using (var sr = new StreamReader("e:\\PrivateKey.xml")) //{ // rsa2.FromXmlString(sr.ReadToEnd()); //} var p = rsa2.ExportParameters(true); var key = new RsaPrivateCrtKeyParameters( new BigInteger(1, p.Modulus), new BigInteger(1, p.Exponent), new BigInteger(1, p.D), new BigInteger(1, p.P), new BigInteger(1, p.Q), new BigInteger(1, p.DP), new BigInteger(1, p.DQ), new BigInteger(1, p.InverseQ)); using (TextWriter sw = new StringWriter()) { var pemWriter = new Org.BouncyCastle.OpenSsl.PemWriter(sw); pemWriter.WriteObject(key); pemWriter.Writer.Flush(); string priKey = sw.ToString(); } }
XML公钥转PEM公钥的代码还未研究。
相关文章推荐
- C# 调用BouncyCastle生成PEM格式的私钥和公钥 , 加密解密 PKCS#1
- java代码调用linux命令,生成.pem公钥私钥证书
- C# RSA加密、解密、加签、验签、支持JAVA格式公钥私钥、PEM格式公钥私钥、.NET格式公钥私钥、一般模式【支持公钥加密,私钥解密】(一)
- 使用openssl生成PEM格式私钥和公钥及ECDSA签名
- 银联手机支付(.Net Csharp),3DES加密解密,RSA加密解密,RSA私钥加密公钥解密,.Net RSA 3DES C#
- C# RSA加密、解密、加签、验签、支持JAVA格式公钥私钥、PEM格式公钥私钥、.NET格式公钥私钥 -变态模式【支持私钥加密,公钥解密】(二)
- RSA私钥和公钥文件格式 (pkcs#1, pkcs#8, pkcs#12, pem)
- c#.net 获取时间日期年月日时分秒生成自动文件名格式
- openssl pem 生成公钥和私钥及文件
- .net C#使用私钥sign公钥验证 验证JWS signature data
- c#生成AVI自动设置压缩格式,不调用AVISaveOptions
- c# RSA 加密解密 java.net公钥私钥转换 要解密的模块大于128字节
- openssl pem 生成公钥和私钥及文件
- C# 生成私钥和公钥
- .NET生成RSA公钥和私钥-加密解密示例
- RSA私钥和公钥文件格式 (pkcs#7, pkcs#8, pkcs#12, pem)
- c#生成rsa公钥和私钥
- VB.NET动态加载C#或VB.NET生成的DLL文件调用动画教程[黑白智慧写](动态调用DLL).txt
- C#下实现RSA公钥私钥由pcks8格式(java)转化为pcks1格式(非java)
- 在ASP.NET(c#)中调用wsChart图表组件生成柱状图