- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Security.Cryptography;
- using System.Text;
- namespace WindowsFormsApplication1
- {
- /// <summary>
- /// DES加密解密字符串
- /// </summary>
- public class DesEncryption
- {
- /// <summary>
- /// DES加密字符串
- /// </summary>
- /// <param name="encryptString">待加密的字符串</param>
- /// <param name="encryptKey">加密密钥,要求为8位</param>
- /// <returns>加密成功返回加密后的字符串,失败返回null</returns>
- public static stringEncryptDES(stringencryptString,stringencryptKey ="11001100")
- {
- try
- {
- byte[] rgbKey = ASCIIEncoding.ASCII.GetBytes(encryptKey.Substring(0,8));
- byte[] rgbIV = rgbKey;
- byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString);
- DESCryptoServiceProvider dCSP =new DESCryptoServiceProvider();
- MemoryStream mStream =new MemoryStream();
- CryptoStream cStream =new CryptoStream(mStream, dCSP.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
- cStream.Write(inputByteArray, 0, inputByteArray.Length);
- cStream.FlushFinalBlock();
- StringBuilder ret =new StringBuilder();
- foreach(bytebin mStream.ToArray())
- {
- ret.AppendFormat("{0:X2}", b);
- }
- ret.ToString();
- return ret.ToString();
- }
- catch
- {
- return null;
- }
- }
- /// <summary>
- /// DES解密字符串
- /// </summary>
- /// <param name="decryptString">待解密的字符串</param>
- /// <param name="decryptKey">解密密钥,要求为8位,和加密密钥相同</param>
- /// <returns>解密成功返回解密后的字符串,失败返回null</returns>
- public static stringDecryptDES(stringdecryptString,stringdecryptKey ="11001100")
- {
- try
- {
- byte[] rgbKey = ASCIIEncoding.ASCII.GetBytes(decryptKey);
- byte[] rgbIV = rgbKey;
- byte[] inputByteArray =new byte[decryptString.Length /2];
- for(intx =0; x < decryptString.Length /2; x++)
- {
- inti = (Convert.ToInt32(decryptString.Substring(x *2,2),16));
- inputByteArray[x] = (byte)i;
- }
- DESCryptoServiceProvider DCSP =new DESCryptoServiceProvider();
- MemoryStream mStream =new MemoryStream();
- CryptoStream cStream =new CryptoStream(mStream, DCSP.CreateDecryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
- cStream.Write(inputByteArray, 0, inputByteArray.Length);
- cStream.FlushFinalBlock();
- return Encoding.UTF8.GetString(mStream.ToArray());
- }
- catch
- {
- return null;
- }
- }
- }
- }
来源: http://www.bubuko.com/infodetail-1957456.html