在使用.NET框架提供的加密算法实现类来执行加密任务时,需要准备加密密钥和初始化向量(Initialization Vector,IV)。基于对称加密的特点,在加密数据之后一定要保存好密钥和初始化向量,因为解密要用到它们。但是对于不同的数据加密,要使用不同的密钥和初始化向量,理论上每次新的加密过程都应该使用全新的密钥和初始化向量。
通常需要将加密密钥和初始化向量传递给另一个人,这时候需要使用非对称加密算法来加密密钥和初始化向量,然后在网络上传输。本节主要演示如何使用加密实践类,更多的应用内容会在本书的第四部分介绍。
那么如何创建加密密钥和初始化向量呢?有两种基本方法,一种是使用加密算法实现类的构造函数,另一种是使用GenerateIV()和GenerateKey()方法生成密钥和初始化向量。
使用构造函数创建密钥和初始化向量
先测试构造函数的方法,如代码清单6-5。
代码清单6-5 使用构造函数创建密钥和初始化向量
using System; using System.Text; using System.Security.Cryptography; namespace Encription { classProgram { staticvoid Main(string[] args) { AesCryptoServiceProvider acsp = new AesCryptoServiceProvider(); WriteKeyAndIV(acsp); AesManaged am = newAesManaged(); WriteKeyAndIV(am); DESCryptoServiceProvider dsp = new DESCryptoServiceProvider(); WriteKeyAndIV(dsp); TripleDESCryptoServiceProvider tdsp = new TripleDESCryptoServiceProvider(); WriteKeyAndIV(tdsp); RijndaelManaged rm = new RijndaelManaged(); WriteKeyAndIV(rm); Console.Read(); } staticvoid WriteKeyAndIV(SymmetricAlgorithm sa) { Console.WriteLine(GetStringFromByte(sa.Key)); Console.WriteLine("*******"); Console.WriteLine(GetStringFromByte(sa.IV)); Console.WriteLine("--------------------------"); } staticstring GetStringFromByte(byte[] bytes) { string s=""; for (int i = 0; i < bytes.Length; i++) { s += bytes[i].ToString()+" "; } return s; } } }
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索函数
, 加密
, dsp
, 密钥
, 向量
, console
, 对称
向量和
.net 对称加密、.net 非对称加密、.net 非对称加密算法、非对称加密、对称加密,以便于您获取更多的相关知识。