还是我的老观点对于新东西我们要不断练习才能够掌握它所以我就不写些抽象的概念了打算以后不定期给出一些实际的代码呵呵在微软的帮助中喜欢把它带的例子称为它的新技术的Framework我在实际编程中确实感觉如此我们往往是根据这些实例代码来编写自己的实际应用的所以我也用了framework这个名词 )
这个例子中演示了如何使用C#中的加密包进行DES算法加密由于NGWNET中带的帮助实在是简单和没有一样呵呵不过大家可以借助
这个例子一窥DES加密的用法
des_democs代码如下
using System;
using SystemSecurityCryptography;
using SystemIO;
using SystemText;
public class EncryptStringDES {
public static void Main(String[] args) {
if (argsLength < ) {
ConsoleWriteLine(Usage: des_demo <stringtoencrypt> args[]);
return;
}
// 使用UTF函数加密输入参数
UTFEncoding utfEncoding = new UTFEncoding();
byte[] inputByteArray = utfEncodingGetBytes(args[]ToCharArray());
// 方式一调用默认的DES实现方法DES_CSP
DES des = DESCreate();
// 方式二直接使用DES_CSP()实现DES的实体
//DES_CSP DES = new DES_CSP();
// 初始化DES加密的密钥和一个随机的比特的初始化向量(IV)
Byte[] key = {x x x x x xab xcd xef};
Byte[] IV = {x x x x x xab xcd xef};
desKey = key;
desIV = IV;
// 建立加密流
SymmetricStreamEncryptor sse = desCreateEncryptor();
// 使用CryptoMemoryStream方法获取加密过程的输出
CryptoMemoryStream cms = new CryptoMemoryStream();
// 将SymmetricStreamEncryptor流中的加密数据输出到CryptoMemoryStream中
sseSetSink(cms);
// 加密完毕将结果输出到控制台
sseWrite(inputByteArray);
sseCloseStream();
// 获取加密数据
byte[] encryptedData = cmsData;
// 输出加密后结果
ConsoleWriteLine(加密结果);
for (int i = ; i < encryptedDataLength; i++) {
ConsoleWrite({:X} encryptedData[i]);
}
ConsoleWriteLine();
//上面演示了如何进行加密下面演示如何进行解密
SymmetricStreamDecryptor ssd = desCreateDecryptor();
cms = new CryptoMemoryStream();
ssdSetSink(cms);
ssdWrite(encryptedData);
ssdCloseStream();
byte[] decryptedData = cmsData;
char[] decryptedCharArray = utfEncodingGetChars(decryptedData);
ConsoleWriteLine(解密后数据);
ConsoleWrite(decryptedCharArray);
ConsoleWriteLine();
}
}
编译
D:\csharp>csc des_democs
Microsoft (R) C# Compiler Version [NGWS runtime ]
Copyright (C) Microsoft Corp All rights reserved
运行实例
D:\csharp>des_demoexe 使用C#编写DES加密程序的framework
加密结果
D C D C C CF CE F D E A D ED A A F E E BA
B D B E F D C D F D B E A
解密后数据
使用C#编写DES加密程序的framework