static string key = "abcefghk"; //定義密鑰
/// <summary> /// 加密字符串
/// </summary>
/// <param name="str">要加密的字符串</param>
/// <returns>加密後的字符串</returns>
public static string Encrypt(string encryptString)
{
var keyBytes = Encoding.UTF8.GetBytes(key.Substring(0, 8));
var keyIV = keyBytes;
var inputByteArray = Encoding.UTF8.GetBytes(encryptString);
var provider = new DESCryptoServiceProvider();
var mStream = new MemoryStream();
var cStream = new CryptoStream(mStream, provider.CreateEncryptor(keyBytes, keyIV), CryptoStreamMode.Write);
cStream.Write(inputByteArray, 0, inputByteArray.Length);
cStream.FlushFinalBlock();
var str = Convert.ToBase64String(mStream.ToArray());
return str.Replace("+", "%2B");
}
public static string Decrypt(string decryptString)
{
var count = decryptString.Length;
var keyBytes = Encoding.UTF8.GetBytes(key.Substring(0, 8));
var keyIV = keyBytes;
var inputByteArray = Convert.FromBase64String(decryptString);
var provider = new DESCryptoServiceProvider();
var mStream = new MemoryStream();
var cStream = new CryptoStream(mStream, provider.CreateDecryptor(keyBytes, keyIV), CryptoStreamMode.Write);
cStream.Write(inputByteArray, 0, inputByteArray.Length);
cStream.FlushFinalBlock();
return Encoding.UTF8.GetString(mStream.ToArray());
}
注意事項:(1)定義密鑰時字符串長度爲4的倍數 不然在解密的時候會出現報異常 字符串長度問題
(2)字符串進行了加密後 如果字符串中有符號+ 替換爲 str.Replace("+", "%2B"); 原因是瀏覽器接收加密後的字符串 request 請求回來時會自動解密一次,+號都變爲了空格
解密 會拋出 字符串長度問題。 這兩個問題讓我糾結了好久 出現其他問題下次再記錄
</pre><pre name="code" class="csharp">