.net证书Rsa加密

参考:基于RSA算法的ios客户端加密和C#服务端解密的解决方案

NET和java的RSA互通,仅此而已

1.生成证书

打开vs开发人员工具使用如下命令生成证书:

makecert -ss My -n CN=Theoservice -sky exchange -pe

Makecert命令的详细说明请参看微软Makecert.exe工具的文档:https://msdn.microsoft.com/zh-cn/library/bfsktky3(v=vs.110).aspx

然后,开始->运行->MMC,打开MMC控制台。文件->添加/删除管理单元->添加按钮->选”证书”->添加->选”计算机账户”->关闭->确定,然后你就可以在 “个人->证书” 里看到刚才生成的证书了。

你可以导出一份不带私钥的cer格式的证书。这张证书只含有公钥,是用来和客户端一起发布出去用来加密数数据的。

2.获取:RSACryptoServiceProvider

 1             X509Store store = new X509Store(StoreLocation.CurrentUser);
 2             store.Open(OpenFlags.ReadOnly);
 3             X509Certificate2Collection certCollection = store.Certificates;
 4             X509Certificate2 cert = null;
 5
 6             // Loop through each certificate and find the certificate
 7             // with the appropriate name.
 8             foreach (X509Certificate2 c in certCollection)
 9             {
10                 if (c.Subject == "CN=Theoservice")
11                 {
12                     cert = c;
13
14                     break;
15                 }
16             }
17             store.Close();
18
19             //从证书中获得含私钥的RSACryptoServiceProvider
20
21             RSACryptoServiceProvider provider = (RSACryptoServiceProvider)cert.PrivateKey;
22             byte[] buff=Encoding.UTF8.GetBytes(source);
23             /*
24              * 一次加密长度为 (KeySize/8)个byte。
25              * 而C#默认采用#PKSC1的padding模式,每次最多可以加密 (KeySize/8-11) 个byte。
26              * RSA分组加密算法每次从明文里取<=(KeySize/8-11)个byte,然后加密成(KeySize/8)个byte的密文;
27              * 解密的时候,每次就取(KeySize/8)个byte的密文,将其解密成<=(KeySize/8-11)个byte的明文。
28              * 因为#PKSC1的padding模式每次padding的内容是随机的,所以即使是加密同一段明文,每次的结果也不一样,这大大的增加了数据安全性。
29              */
30             //加密
31             provider.Encrypt(buff, false);
32             //解密
33             provider.Decrypt(buff, false);

注:1. 每次加密最大(KeySize/8-11)个byte,解密(KeySize/8)个byte

2.加密后固定(KeySize/8)个byte

3.KeySize=密钥长度

时间: 2024-08-05 08:41:06

.net证书Rsa加密的相关文章

RSA加密解密及RSA签名和验证及证书

公钥是给别人的 发送密文使用公钥加密 验证签名使用公钥验证 私钥是自己保留的 接受密文使用私钥解密 发送签名使用私钥签名 上述过程逆转是不行的,比如使用私钥加密,使用公钥解密是不行的 证书的制作参考自使用X.509数字证书加密解密实务(一)-- 证书的获得和管理 打开VS开发命令,输入下面的命令: makecert -sr CurrentUser -ss My -n CN=MyTestCert -sky exchange -pe 从证书中读取私钥和公钥: /// <summary> /// 根

C#使用RSA证书文件加密和解密示例

原文:C#使用RSA证书文件加密和解密示例 修改MSDN上的示例,使之可以通过RSA证书文件加密和解密,中间遇到一个小问题. Q:执行ExportParameters()方法时,回报CryptographicException:该项不适于在指定状态下使用(Key not valid for use in specified state). A:导入带有私钥的证书时,需要使用"X509KeyStorageFlags"参数标记"私钥可导出". X509Certifica

一篇搞定RSA加密与SHA签名|与Java完全同步

看到这篇文章的同学可幸福了,当时在做RSA加密与签名的时候网上的资料简直不要太老,做完后实在是忍受不下去了,这篇文章我会详细讲解iOS如何实现RSA加密与签名,并且与Java完全同步,这是我的第二篇博客,若有什么不足之处还请大家指教. 基础知识 什么是RSA? 答:RSA是一种非对称加密算法,常用来对传输数据进行加密,配合上数字摘要算法,也可以进行文字签名. RSA加密中padding? 答:padding即填充方式,由于RSA加密算法中要加密的明文是要比模数小的,padding就是通过一些填充

RSA加密,js前端,php后端

通过http://www.cnblogs.com/smismile/p/3789874.html这篇博文生成所需的公钥字符串和私钥 1. 前端加密写法,所需js文件 <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script> <script src="./Barrett.js"></script> <script src=".

RSA 加密传输 (php)

RSA加密传输: 对于初接触RSA加密的童鞋来说,很可能会被绕进去.最近写了一个RSA加密传输的需求,总结一下.希望能对你有点帮助. 首先要明白以下几点: 1:公钥和私钥一定是成对的才可以 2:私钥是保密的,公钥是公开的 3:公钥和私钥,可以互为加密和解密 4:用其中一个密钥加密数据,则只有对应的那个密钥才能解开 主要有两种用法 1:公钥加密 A传输数据给B (1),A用公钥加密数据,传输给B (2),B用私钥解密 2:公钥认证 A传输数据给B (1),A用私钥加密数据(也就是私钥签名),传输给

利用RSACryptoServiceProvider进行RSA加密解密

前言: 本文只介绍How to use,对于加密算法的研究不予讨论. 关于私钥的存储,微软给的建议是使用windows自带的秘钥容器,相见文档. 为了直观看到私钥和公钥,本文直接将其存入XML文件中.现实情况则要复杂的多,还牵涉到数字签名.数字证书等. 关于公钥.私钥.数字签名.数字证书的概念,相见阮一峰大神的博客,传送门在这里. 正文: 由于RSA不适合加密大量数据,所以可以采用DES和RSA混合加密的方法,即先用DES加密数据,再用RSA加密DES的秘钥. RSAHelper 类 publi

RSA加密解密和读取公钥、私钥

/// <summary>     /// RSA加密解密及RSA签名和验证    /// </summary>     public class RSADE    {                 public RSADE()         {                     } #region RSA 加密解密 #region RSA 的密钥产生             /// <summary>        /// RSA 的密钥产生 产生私钥 和公

通过ios实现RSA加密和解密

在加密和解密中,我们需要了解的知识有什么事openssl:RSA加密算法的基本原理:如何通过openssl生成最后我们需要的der和p12文件. 废话不多说,直接写步骤: 第一步:openssl来生成公钥和私钥证书,最后需要得到公钥证书和私钥证书 . 这是在mac OX系统下显示的证书,如果我们用文本编辑器打开它,会发现里面是----BEGIN RSA 开头  并且----END RSA 结尾的一串字符串. 第二步:我们需要在代码中写我们的加密和机密方法,加密的字符串通过公钥进行加密,加密后的字

iOS常用加密之RSA加密解密

前言: iOS常用的加密有很多种,前两天在工作中遇到了RSA加密,现在把代吗分享出来. RSA基本原理 RSA使用"秘匙对"对数据进行加密解密.在加密解密数据前,需要先生成公钥(public key)和私钥(private key). 公钥(public key): 用于加密数据. 用于公开, 一般存放在数据提供方, 例如iOS客户端. 私钥(private key): 用于解密数据. 必须保密, 私钥泄露会造成安全问题 第一步:公钥.私钥的生成 iOS开发者可直接在Mac终端生成,命