C# DES加密字符串的一些知识

DES 加密的一些名词 : 原字符串 加密后字符串 密钥 与 向量

1。将原字符串转为 字节数组.使用 UTF8解码。

byte[] InputStrArr = System.Text.Encoding.UTF8.GetBytes(InputStr);

2.得到密钥与向量的字节数组 都为8位。

byte[] key ;

byte[] iv;

// 创建一个DES

DESCryptoServiceProvider des = new DESCryptoServiceProvider();

// 创建一个内存流,用来将加密后的字节写入。
MemoryStream ms = new MemoryStream();

// 创建一个加密流。 他的第一个参数是一个流,可以是刚才定义的内存流 或是什么文件流都可以。 

// 第二个参数是使用刚才定义的 DES 及密钥与向量.来生成一个加密/解密 器。加密为 CreateEncryptor,解密为 CreateDecryptor.

// 第三个参数是,这个加密流的模式,是写入的还是读出来的。 一般加密用写,解密用读。
CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(keyArr, ivArr), CryptoStreamMode.Write);

// 使用这个加密流, 将,原字符串,写入内存流

cs.write(inputStrArr,0,inputStrArr.length);

cs.FlushFinalBlock();
cs.Close();

// 得到内存流的字节数组.
byte[] result = ms.ToArray();
ms.Close();
// 最后的结果返回一个 Base64String.

// 这里比较重要。要不然,有可能解密时说什么要解密的字符串长度有问题

return Convert.ToBase64String(result);

 

-----------解密时。

把输入的加密后的字符串转成字节数组,就不能使用 Text.Encoding了。 需要使用Convert.FromBase64String(cipherStr); 与加密的呼应。这样确保了字符串的格式正确。

在最后得到解密后的字符串时。 再使用 UTF8解码。 就可以正确的解出原字符串了。

posted @ 2012-11-16 17:07  easyfrog  阅读(472)  评论(0编辑  收藏  举报