测试环境:windows10和Microsoft Visual Studio 2010
文章要点:
1、System.Security.Cryptography介绍
2、加密算法介绍
3、使用加密服务
4、加密代码实例
电子商务的爆炸性增长需要保护更多的保密数据,对安全算法的需要也日益增加。
1、System.Security.Cryptography介绍
VB6要加密算法的代码需要自己写,而在VB.NET加密算法的代码都已经封装在Microsoft .NET 公共语言运行库 (CLR) 的 System.Security.Cryptography 命名空间里,通过编程访问各种加密服务并入应用程序来加密和解密数据、确保数据完整性。
Cryptography 命名空间的主要功能是提供用来实现算法(例如加密和创建散列)的类。这些算法是使用包含两级继承的可扩展方式来实现的。抽象基类(例如 AsymmetricAlgorithm 或 HashAlgorithm)位于层次结构的顶端并表示算法类型。然后从顶级类派生出第二级抽象类,为算法提供公开的接口。例如,SHA1(安全散列算法)类是从 HashAlgorithm 派生的,其中包含 SHA1 算法特有的方法和属性。最后,从第二级抽象类派生出算法的实现,这是大部分客户端应用程序实例化并使用的算法。在这个具体级别上,这些实现可以是托管的、非托管的或两者兼具。
非托管的实现通常带有后缀“CryptoServiceProvider”(例如,SHA1CryptoServiceProvider),表示该实现实际上是由加密服务提供程序 (CSP) 提供的。CSP 安装在操作系统层,起了 Crypto API 包装程序的作用。托管的实现带有后缀“Managed”(例如 SHA1Managed),这些实现不依赖于 Crypto API,因此完全是由托管代码实现的。
关于这些算法还需要注意的是,当这些具体的类被实例化时,默认构造函数总是导入该算法的具有合理、安全值的默认参数(如果可能)。例如,依赖于公钥密码的不对称算法将生成随机密钥对,而对称算法则生成一个随机密钥和一个初始化矢量 (IV) 并自动设置诸如 Mode 和 Padding 等属性。此外,如果有可能,这些算法将使用“strong”默认值。
System.Security.Cryptography 命名空间的第二个主要类集合包括数据加密和解密进程中使用的类,以及各种 helper 类。命名空间中包含的类包括 RandomNumberGenerator 的抽象类(从中派生出 RNGCryptoServiceProvider),以及 ToBase64Transform 和 FromBase64Transform 类(用于与 base64 之间来回转换数据)。
除了提供加密算法以外,Cryptography 命名空间还包含子命名空间 X509Certificates。其中只包含三个用于表示和管理 Authenticode X.509 v.3 证书的类。
Cryptography 命名空间还包括子 XML 命名空间,.NET Framework 的安全系统使用该空间对 XML 对象进行数字化标记。该框架附属于有关 XML 签名语法和处理的 W3C 规范草案 (http://www.w3.org/TR/2000/WD-xmldsig-core-20000228/)。该规范包括用于创建和表示数字签名的 XML 语法和处理规则,可以应用于包含该签名的 XML 文档的任何内部或外部内容。尽管该规范目前还没有强调 XML 的加密,但为 XML 文档提供完整性、消息验证和签名者身份验证服务无疑是重要的。
Cryptography 命名空间还包括名为 KeyedHashAlgorithm 的抽象类(请参见图 5)。在 HMACSHA1 和 MACTripleDES 类中实现的算法是从 KeyedHashAlgorithm 派生的,用来生成消息验证代码 (MAC)。只要发送者和接收者共享一个密钥,MAC 就可用于确定通过不安全信道发送的数据是否被篡改。
2、加密算法介绍
(1)、对称加密(DES、3DES、AES、RC6、TEA等)
所谓对称就是指加密解密中使用的key值是一样的,这种加密算法也是我们大家日常用的最多的加密算法了,这类加密算法一般公开, 遭受考验的也主要是key的长度。想象A加完密的密文发送给B,如果B想知道原文,还要根据解密算法解开才可以 ! 因此key值的保密性在这类应用中的重中之重!
SymmetricAlgori