.NET揭开了加密的神秘面纱

ZDNet软件频道 时间:2003-02-25 作者:BUILDER.COM |  我要评论()
本文关键词:
我会将本文的内容限制在加密和解密上,我们的例子就从一个本地文本文件的加密开始,然后再转移到更加复杂的、互连计算机之间信息的加密上。
将先前分开的API和SDK聚集到了统一的框架之下,.NET通过这种方式为Windows的开发人员提供了便利。例如,想一想.NET的System.Security.Cryptography命名空间已经采用了CryptoAPI。加密服务已经从其原来平台SDK(Platform SDK)的神秘角落里走了出来,在某种程度上来看,成为了“另一个.NET的命名空间”。当然,其真正的含义比上面所说的要多,但是关键一点是:使用加密服务更加容易了,因为这些服务和这个框架的其他部分一起成为了一个整体。现在,你只需要去学习System.Security.Cryptography命名空间会做些什么,以及在特定情况下应该正确使用哪个类就行了。


代码下载
你可以在这里下载本文的.cs文件。


System.Security.Cryptography命名空间

这个命名空间包含了能够实现安全解决方案的类,例如:

  • 数据的加密和解密。
  • 持久加密密钥的管理。
  • 数据片段完整性的验证,以保证它没有被(恶意)修改。

我会将本文的内容限制在加密和解密上,但是要记住的是,这只是整个难题的一部分;一个真正安全的解决方案还会使用其他的部分。我们的例子就从一个本地文本文件的加密开始,然后再转移到更加复杂的、互连计算机之间信息的加密上。

对称算法

要加密一个本地文本文件,我们要使用一种对称加密算法:称其为对称是因为相同的密钥和初始化向量(IV)既要被用来加密又要被用来解密一段数据。(IV和密钥的关系在.NET文档的加密概要部分有解释。)

.NET对对称算法的实现来源于一个通用的抽象基类——SymmetricAlgorithm,其主要用途是让程序员能够把每个专门的算法——DES、TripleDES和Rijndael——以相同的方式处理。这些算法在如何加密数据上存在着不同,但是公共接口是相同的。这并不意味着所有的算法都相同。例如,你可以通过名字猜测到TripleDES是一个比DES更加安全的后继者。

由于相同的密钥会被用来加密和解密数据,所以对称算法最适合于密钥不需要公开的场合。网络加密则需要非对称和对称算法的组合,你会在后面看到这一点。但是首先让我们用好对称算法。


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134