c#.net 调用BouncyCastle生成PEM格式的私钥和公钥

            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中就是转换好的格式。但直接存入string字符串中的代码还没研究出来。    读取XML私钥的代码可以换成生成XML私钥。

时间: 2024-10-13 02:10:52

c#.net 调用BouncyCastle生成PEM格式的私钥和公钥的相关文章

Mac下如何生成RSA加密的私钥和公钥

关于RSA加密算法的介绍这里就不复制粘贴了,下面讲的是如何在Mac下利用命令行生成RSA的私钥和公钥. 使用command生成2048位的私有密钥 openssl genrsa -out private_key.pem 2048 当前的目录下会生成一个名为 private_key.pem 的文件,如果用文本编辑器打开,你会发现是这样的: 这些东西就是我们刚刚生成的密钥,这个东西只能放在服务端,如果这个东西泄漏,整个RSA加密环节就暴露了. 接下来我们利用私钥生成公钥(command命令必须在刚才

openssl生成RSA格式,并转为pkcs8格式

原文地址:http://www.thinkingquest.net/articles/391.html?utm_source=tuicool 支付宝接口开发相关:openssl 加密工具 支付宝“手机网站支付“开发包里面有,下载地址:https://b.alipay.com/order/techService.htm 生成命令使用说明: RSA密钥生成命令  生成RSA私钥  openssl>genrsa -out rsa_private_key.pem 1024  生成RSA公钥  opens

C#RSA算法实现+如何将公钥为XML格式转为PEM格式,给object-C使用

.net中,处于安全的考虑,RSACryptoServiceProvider类,解密时只有同时拥有公钥和私钥才可以.原因是公钥是公开的,会被多人持有.这样的数据传输是不安全的.C#RSA私钥加密,公钥解密出错的原因! C#中用RSA算法生成公钥和私钥 方法一: 公钥密钥生成后,保存在同名文件夹下面,如下图: 公钥密钥生成,所在路径[RSA\RSA\bin\Debug] using System; using System.IO; using System.Security.Cryptograph

STM32F4系列单片机上使用CUBE配置MBEDTLS实现pem格式公钥导入

|版权声明:本文为博主原创文章,未经博主允许不得转载. 最近尝试在STM32F4下用MBEDTLS实现了公钥导入(我使用的是ECC加密),整个过程使用起来比较简单. 首先,STM32F4系列CUBE里已经集成了MBEDTLS, MBEDTLS是ARM公司的开源加密库,遵守APACHE协议,大家可以随便使用MBEDTLS到开源和闭源项目上. 其次,除了ECC,MBEDTLS还支持AES系列对称加密,支持基于AES的NONCE生成,支持SHA系列摘要算法等,可以应用在各种加密场景. 1. 在CUBE

C# RSA加密、解密、加签、验签、支持JAVA格式公钥私钥、PEM格式公钥私钥、.NET格式公钥私钥 -变态模式【支持私钥加密,公钥解密】(二)

RSA变态模式:[私钥加密,公钥解密] 一般这种写法都是JAVA弄的..NET原生不支持.为啥,我也不清楚,大概是因为安全性问题吧,毕竟公钥是人人都可是持有的.私钥只有自己拥有. 对接注意事项:https://www.cnblogs.com/kevin860/p/9557845.html 一般方法请看:https://www.cnblogs.com/kevin860/p/9557845.html 签名一直都是[私钥加签.公钥验签]只为证明该消息是你发出来的. 这里使用了BouncyCastle1

全面解决.Net与Java互通时的RSA加解密问题,使用PEM格式的密钥文件

一.缘由 RSA是一种常用的非对称加密算法.所以有时需要在不用编程语言中分别使用RSA的加密.解密.例如用Java做后台服务端,用C#开发桌面的客户端软件时.由于 .Net.Java 的RSA类库存在很多细节区别,尤其是它们支持的密钥格式不同.导致容易出现“我加密的数据对方不能解密,对方加密的数据我不能解密,但是自身是可以正常加密解密”等情况.虽然网上已经有很多文章讨论 .Net与Java互通的RSA加解密,但是存在不够全面.需要第三方dll.方案复杂 等问题.于是我仔细研究了这一课题,得到了一

导出证书Cer文件为Pem格式的步骤

(1)先导出Push Services的证书,比如我们命名为“magic_cert.p12”,注意导出时会让你输入密码. (2)再导出Push Services证书的密钥(Private Key),比如我们命名为“magic_key.p12”: 5.p12文件转换为pem文件. (1)  将两个p12文件分别转换为pem格式文件. 打开“终端”,敲入命令即可转换. 第一个: openssl pkcs12 -clcerts -nokeys -out magic_cert.pem -in magic

用插件maven-surefire-report-plugin生成html格式测试报告

在默认情况下,执行maven test/maven package/maven install命令时会在target/surefire-reports目录下生成txt和xml格式的输出信息. 其实maven也可以生成html格式的报告,只需要用一个插件即可:maven-surefire-report-plugin. 这个插件的特点: 1.能把生成的xml报告转换成html 2.能指定哪些测试类需要被执行,哪些测试类不被执行 3.能兼容JUnit 3.JUnit 4以及TestNG 4.在默认情况

ubuntu下用java代码调用命令将java格式文件转换为html格式文件

首先我们应该在电脑上装上GNU Source-highlight 3.1.7,给个链接参考: http://www.gnu.org/software/src-highlite/#mozTocId120994 下面代码实现了 将java类型的代码转换为html文件类型的代码,如果java代码的文件名为 helloword.java,则转换为html格式的文件名为helloword.java.html,将java代码在浏览器上显示出来.其次我还将html文件中的内容提取出来,便于在html文件里编写