您的位置:首页 > 编程语言 > C#

c# DES 加密解密方法

2013-07-24 15:26 676 查看
#region 密钥

private static string key = "abcd1234";                                   //密钥(长度必须8位以上)

#endregion

#region DES加密

public static string EncryptString(string pToEncrypt)
{

DESCryptoServiceProvider des = new DESCryptoServiceProvider();

byte[] inputByteArray = Encoding.UTF8.GetBytes(pToEncrypt);

des.Key = UTF8Encoding.UTF8.GetBytes(key);

des.IV = UTF8Encoding.UTF8.GetBytes(key);

MemoryStream ms = new MemoryStream();

CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);

cs.Write(inputByteArray, 0, inputByteArray.Length);

cs.FlushFinalBlock();

StringBuilder ret = new StringBuilder();

foreach (byte b in ms.ToArray())
{

ret.AppendFormat("{0:X2}", b);

}

ret.ToString();

return ret.ToString();

}

#endregion

#region DES解密

public static string DecryptString(string pToDecrypt)
{

DESCryptoServiceProvider des = new DESCryptoServiceProvider();

byte[] inputByteArray = new byte[pToDecrypt.Length / 2];

for (int x = 0; x < pToDecrypt.Length / 2; x++)
{

int i = (Convert.ToInt32(pToDecrypt.Substring(x * 2, 2), 16));

inputByteArray[x] = (byte)i;

}

des.Key = UTF8Encoding.UTF8.GetBytes(key);

des.IV = UTF8Encoding.UTF8.GetBytes(key);

MemoryStream ms = new MemoryStream();

CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);

cs.Write(inputByteArray, 0, inputByteArray.Length);

cs.FlushFinalBlock();

StringBuilder ret = new StringBuilder();

return Encoding.UTF8.GetString(ms.ToArray());

}

#endregion

需要引用的命名空间:
using System.IO;
using System.Text;
using System.Security.Cryptography;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: