类是转自:
http://forums.asp.net/t/1222829.aspx,但是有些问题,现在把解决方法共享下,很简单的
using
System;
using
System.IO;
using
System.Xml;
using
System.Text;
using
System.Security.Cryptography;
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
/**/
/// <summary>
/// Summary description for Encryption64
/// </summary>
public
class
Encryption64
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
const string DESKey = "AQWSEDRF";
const string DESIV = "HGFEDCBA";
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public static string DESDecrypt(string stringToDecrypt)//Decrypt the content
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
byte[] key;
byte[] IV;
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
byte[] inputByteArray;
try
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
key = Convert2ByteArray(DESKey);
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
IV = Convert2ByteArray(DESIV);
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
int len = stringToDecrypt.Length;
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
// stringToDecrypt =stringToDecrypt.Replace(" ","+");
inputByteArray = Convert.FromBase64String(stringToDecrypt);
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
MemoryStream ms = new MemoryStream();
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(key, IV), CryptoStreamMode.Write);
cs.Write(inputByteArray, 0, inputByteArray.Length);
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
cs.FlushFinalBlock();
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
Encoding encoding = Encoding.UTF8; return encoding.GetString(ms.ToArray());
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
catch (System.Exception ex)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
throw ex;
}
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public static string DESEncrypt(string stringToEncrypt)// Encrypt the content
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
byte[] key;
byte[] IV;
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
byte[] inputByteArray;
try
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
key = Convert2ByteArray(DESKey);
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
IV = Convert2ByteArray(DESIV);
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
inputByteArray = Encoding.UTF8.GetBytes(stringToEncrypt);
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
MemoryStream ms = new MemoryStream(); CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(key, IV), CryptoStreamMode.Write);
cs.Write(inputByteArray, 0, inputByteArray.Length);
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
cs.FlushFinalBlock();
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
string value = Convert.ToBase64String(ms.ToArray());
// value = value.Replace("+"," ");
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
return value;
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
catch (System.Exception ex)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
throw ex;
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
static byte[] Convert2ByteArray(string strInput)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
int intCounter; char[] arrChar;
arrChar = strInput.ToCharArray();
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
byte[] arrByte = new byte[arrChar.Length];
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
for (intCounter = 0; intCounter <= arrByte.Length - 1; intCounter++)
arrByte[intCounter] = Convert.ToByte(arrChar[intCounter]);
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
return arrByte;
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
}
以上代码大部分时间运行是正常的,但是加密得出的字符串如果包含"+",用
Request.QueryString接收,"+"字符会漏掉,
解密的时候就会报
Invalid length for a Base-64 char array异常,所以加密后要替换下
string
value
=
Convert.ToBase64String(ms.ToArray());
value
=
value.Replace(
"
+
"
,
"
"
);
解密时就要替换回来
stringToDecrypt
=
stringToDecrypt.Replace(
"
"
,
"
+
"
);
inputByteArray
=
Convert.FromBase64String(stringToDecrypt);
希望对您有帮助,弄了好久才发现的。。。