在C#中直接引用加密类库比在C中要方便和快速
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的实体
SymmetricStreamEncryptor sse = desCreateEncryptor(); // 初始化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