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

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

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

 作者:未知    来源:51Testing软件测试网采编

#
it
#
IT
分享:

  在.NET中使用RSA算法进行数据加密和签名,很多时候,我们需要重复的使用一组密钥,因此就需要将这组密钥保存起来。接下来,我给大家介绍3种在.Net中保存密钥的方法。

  第一种方法:将密钥导出保存为本地文件。

  首先要强调的是,出于安全性考虑,不建议使用这种方法保存私钥,如果使用,请在密钥导出的时候只导出公钥。

  RSACryptoServiceProvider对象提供了一个ToXmlString(bool includePrivateParameters)方法,我们可以使用此方法将密钥导出为一个xml格式的string,然后将其保存到一个文件中,这个方法的参数为true时会导出私钥,否则不导出私钥。需要的时候,我们可以使用FromXmlString(string xmlString)方法,将保存的密钥信息加载到RSACryptoServiceProvider对象中。下面的代码实现了导出和导入操作:

1: static void SaveKey2File(RSACryptoServiceProvider rsa, string fileName)
2: {
3:     FileStream fs = new FileStream(fileName, FileMode.Create, FileAccess.Write);
4:     string key = rsa.ToXmlString(false);
5:     fs.Write(Encoding.UTF8.GetBytes(key), 0, key.Length);
6:     fs.Close();
7:     fs.Dispose();
8: }
9:
10: static void LoadKeyFromFile(RSACryptoServiceProvider rsa, string fileName)
11: {
12:     FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
13:     byte[] data = new byte[fs.Length];
14:     fs.Read(data, 0, (int)fs.Length);
15:     fs.Close();
16:     fs.Dispose();
17:     rsa.FromXmlString(Encoding.UTF8.GetString(data));
18: }

  实际的工作中,出于安全性考虑,很少会用的上面的方法保存密钥,但如果你想看看密钥长什么样子,这个方法还是挺有用的~~

41/41234>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号