.NET中非对称加密RSA算法的密钥保存

发表于:2010-8-04 13:15

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:中国IT实验室

  如果证书保存在计算机的证书存储区(Certificate Store)中,我们就需要使用另一个对象X509Store来访问证书存储区。根据访问权限,证书存储区分为当前用户(Current User)和本地计算机(Local Machine)两个部分,前者用来保存当前登录的用户所能使用的数字证书,而后者用来保存登录到本机所能使用的数字证书。不管是当前用户还是本地计算机,都包含多个逻辑存储区,它们通过不同的名称来区分,每个逻辑存储区可以保存多个数字证书。更详细的介绍,可以参考证书 <http://technet.microsoft.com/zh-cn/library/cc784662%28WS.10%29.aspx>。具体的访问证书存储区的代码如下:

1: private X509Certificate2 GetCertificate(string CertName)
2: {
3:     //声明X509Store对象,指定存储区的名称和存储区的类型
4:     //StoreName中定义了系统默认的一些存储区的逻辑名称
5:     X509Store store = new X509Store(StoreName.My, StoreLocation.CurrentUser);
6:     //以只读的方式打开这个存储区,OpenFlags定义的打开的方式
7:     store.Open(OpenFlags.ReadOnly);
8:     //获取这个存储区中的数字证书的集合
9:     X509Certificate2Collection certCol = store.Certificates;
10:     //查找满足证书名称的证书并返回
11:     foreach (X509Certificate2 cert in certCol)
12:     {
13:         if (cert.SubjectName.Name == "CN="  + CertName)
14:         {
15:             store.Close();
16:             return cert;
17:         }
18:     }
19:     store.Close();
20:     return null;
21: }

  我们也可以通过X509Certificate2Collection 对象在当前存储区中添加删除证书。

  上面的介绍是我自己对密钥保存的一些理解,大家可以根据的具体情况,去选择具体的方法,希望对大家有所帮助。如果哪位大神有更好的方法,希望留下你的方法共我们学习。

44/4<1234
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号