using System; using System.Collections.Generic; using System.Text; using System.Security.Cryptography; using System.IO; namespace cnlogic { class DES { //DES支持64bit密钥 //static DESCryptoServiceProvider desProvier = new DESCryptoServiceProvider(); //TripleDES(3DES)支持128bit和192bit密钥 static TripleDESCryptoServiceProvider desProvier = new TripleDESCryptoServiceProvider(); byte[] desKey;//密钥 byte[] desIV;//向量 public DES(string desKey) { this.desKey = ASCIIEncoding.ASCII.GetBytes(desKey); this.desIV = this.desKey; } public DES(byte[] desKey) { this.desKey = desKey; this.desIV = this.desKey; } public byte[] DESEncrypt(byte[] plain, int offset, int count) { MemoryStream msEncrypt = new MemoryStream(); CryptoStream csEncrypt = new CryptoStream(msEncrypt, desProvier.CreateEncryptor(desKey, desIV), CryptoStreamMode.Write); csEncrypt.Write(plain, offset, count); csEncrypt.Close(); byte[] bytesCipher = msEncrypt.ToArray(); msEncrypt.Close(); return bytesCipher; } public byte[] DESDecrypt(byte[] cipher) { MemoryStream msDecrypt = new MemoryStream(cipher); CryptoStream csDecrypt = new CryptoStream(msDecrypt, desProvier.CreateDecryptor(desKey, desIV), CryptoStreamMode.Read); MemoryStream msPlain = new MemoryStream(); int b; while ((b = csDecrypt.ReadByte()) != -1) { msPlain.WriteByte((byte)b); } byte[] bytesPlain =msPlain.ToArray(); msPlain.Close(); csDecrypt.Close(); msDecrypt.Close(); return bytesPlain; } } }