.NET中的密码学--对称加密(一)

翻译|其它|编辑:郝浩|2004-07-08 10:49:00.000|阅读 1630 次

概述:

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

介绍

.NET之前,使用非托管的Win32APIs加密解密数据是一件非常痛苦的事情。为了这个加密解密的目的,.NET配置了一组类(和命名空间)。现在你有很多类可以使用每种不同的算法保护你的数据。在.NET里面Crypttography命名空间下又定义了3种类型的加密方法。他们是AsymmetricAlgorithmSymmetricAlgorithmHashAlgorithm。所有的这些类(和.NET密码学类型)都是抽象类。我们今天将要描述SymmetricAlgorithm。剩下的将在以后的文章中陆续讲解。

注意:虽然大多数托管代码里的加密类实现使用了很多CryptoAPI库。

SymmetricAlgorithms基础

      对称算法使用用户的密钥(密码)工作。它的意思是,任何时候你都可以实现它而且可以使用对称算法加密或者解密你的数据,为了加密或者解密你的数据你必须定义一个密码或者一个密钥。下面描述了对称加密的特性。

  • 加密的强度依赖于你的密钥(密码)。如果你配置一个长的密钥,它将是非常难破解的。意思是他将要花费很长的时间让黑客找到密钥。
  • 对称加密的一个风险是密码应该让第二个人知道(这个人必须用你的密钥来解密数据)。
  • 这种加密算法是基于简单的数学操作,因此它工作的非常快。因此当你要加密的数据量非常大的时候它是最好的选择。
  • 基于对称的加密可以被黑客暴力破解。但是如果你定义一个非常好的密码(足够长),这个破解的过程将需要很长的时间。
  • 一旦用户定义了密钥。黑客可以使用暴力破解或者字典来编码或者解密你的信息。但是长的密钥可以在黑客破解你的密码的时候保护你的数据更长的时间。

另外在使用密钥或者密码对称加密过程中有一件非常重要的事情。就是初始化向量(IV)IV被使用在最初的编码中(加密或者解密)。在所有的对称算法类中我们有一个名叫Mode的属性。这是被IV使用的。如果我们设置Mode属性为CipherMode.CBCCipher Block Chaining),则使用这个模式,每个数据块使用来自前一个块的值来处理。意思是如果系统在处理第三块数据,则它会从第二块中取一些信息(处理第三块数据)。接着它会取第一块数据中的信息用来处理第二块数据。但是在第一块数据之前没有可以用的块,因此它将使用IV来处理第一块。这个技术确保没有两个相同的块产生相同的输出并且因此使得数据更安全。然而如果你使Mode=CipherModer.ECBElectronic codebook mode),则他不会使用上面的方法(使用前面的处理的块信息处理后面的块)。如果你想用很少的资源和时间处理大量的消息那么这个方法对于你来说就很有用。他也可以让你从数据的中间开始处理。

应此,上面我们包含了在对称加密中的两间非常重要的事情。他们是密钥和初始化向量。现在让我们看看对称加密支持哪些算法。


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP