日期:2013-08-19  浏览次数:20455 次

安全是许多应用的关键。提供认证和授权服务仅仅是整个安全系统的一部分。当数据在应用系统中使用、传输,它会如何呢?这就是密码学之所以由来的原因。密码学本身是一个很大的论题。在接下来的文章中,我们仅仅讨论.Net Framework及其提供的密码加密类。

为什么要用加密系统?

大多应用系统提供了安全特征,比如登录框、基于角色的认证等。然而当一些人如果截取了网络中的数据怎么办?或某人伪造传送在网上的数据?如果某人打开了存储密码的数据库?密码系统将提供我们解决问题的方法。使用.NET Framework加密类,你可以将流动在你系统中的数据加密,当认证的用户需要读取或修改时再解密数据。简而言之,密码系统具有下面的特征:
。保护数据不被第三方读取
。保护数据不被其它方修改
。保证数据正确到达目的地

密码类的类型:

在.Net Framwork个可用的加密类型包括下面几个:

。密钥加密类
。公钥加密类
。数字签名类
。哈希加密类
所有加密相关的类可以在System.Security.Cryptography名称空间中找到。

=密钥加密=
在密钥加密中,数据被一个唯一的密钥加密。这个密钥只有信息的接收和发送方知道。发送方使用密钥加密,接收方使用同一密钥解密。

.NET Framework提供以下几个类处理密钥加密。
DESCryptoServiceProvider
RC2CryptoServiceProvider
RijndaelManaged
TripleDESCryptoServiceProvider
:公钥加密:
和密钥加密不同,公钥加密使用两个密钥。一个叫做公钥一个是私钥。公钥是对外公开的,私钥则被这个密钥的拥有者保存着。被密钥加密的数据只能被相应的公钥解密。同样,被公钥加密的数据只能被相应的私钥解开。
自然地,为了加密你要传送的数据,你需要使用公共密钥。而它只能被相应的私有密钥解开。

.NET Framework提供了以下类处理公共密钥加密。

DSACryptoServiceProvider
RSACryptoServiceProvider

==数字签名==

数字签名被用在确认发送者的身份及保证数据的完整。它经常和公共钥匙加密一起使用。数字签名工作如下:

。发送者使用哈希算法对要发送的数据产生一个信息摘要,这个摘要简单描述了要发送的数据。
。发送者使用私有密钥加密信息摘要从而得到一个数字签名。
。发送者通过安全渠道将数据发送出去。
。接收方收到数据,并使用公共密钥解密数字签名重新得到信息摘要。
。接收方应用相同的哈希算法创建一个新的信息摘要。
。如果发送方的信息摘要与招收方的信息摘要一致,则说明信息来自正确的地方。

DSACryptoServiceProvider 与 RSACryptoServiceProvider 类用来创建数字签名。

哈希加密==

哈希算法为给定可变长度的数据创建固定长度的输出。如果源数据改变,则产生不同的哈希值。它常常和数字签名一起使用。

.NET中提供了下面几个哈希类。

SHA1Managed
MD5CryptoServiceProvider
MACTripleDES


随机数生成器

在密码系统中,你可能多次需要产生密钥,随机数生成器可以满足要求。在.NET中RNGCryptoServiceProvider产生这样的随机数。
下一篇文章将介绍密钥加密几个类的使用