我開發與Asp.net項目,並有一個加密方法。當我使用它來加密字符串,它返回一個包含像一些字符的字符串「+」因爲我在我的查詢字符串使用其返回值,我需要刪除這些字符如何從返回的值刪除非法字符FO加密方法查詢字符串使用瓦爾
例如:
http://localhost/Cpanel/CompanyInfo/Hotels/EditHotel/VKWbk+G9F6E=
錯誤:HTTP錯誤404.11 - 找不到 請求篩選模塊被配置爲拒絕包含雙轉義序列的請求。
http://localhost/Cpanel/CompanyInfo/Hotels/EditHotel/bprrmsZ6atI=
它的偉大工程
這是我的加密方法:
public static string EncryptString(string Message)
{
string Passphrase = System.Configuration.ConfigurationSettings.AppSettings["CryptographyKey"];
byte[] Results;
System.Text.UTF8Encoding UTF8 = new System.Text.UTF8Encoding();
//Hash the passphrase using MD5
MD5CryptoServiceProvider HashProvider = new MD5CryptoServiceProvider();
byte[] TDESKey = HashProvider.ComputeHash(UTF8.GetBytes(Passphrase));
TripleDESCryptoServiceProvider TDESAlgorithm = new TripleDESCryptoServiceProvider();
TDESAlgorithm.Key = TDESKey;
TDESAlgorithm.Mode = CipherMode.ECB;
TDESAlgorithm.Padding = PaddingMode.PKCS7;
byte[] DataToEncrypt = UTF8.GetBytes(Message);
try
{
ICryptoTransform Encryptor = TDESAlgorithm.CreateEncryptor();
Results = Encryptor.TransformFinalBlock(DataToEncrypt, 0, DataToEncrypt.Length);
}
finally
{
TDESAlgorithm.Clear();
HashProvider.Clear();
}
return HttpUtility.HtmlEncode(Convert.ToBase64String(Results));
}
我可怎麼辦呢?
只是一個小注:歐洲央行是不是一個安全的塊加密模式。這是一個非常明顯的例子應該立即清楚,爲什麼:[圖片來源:Wikipedia(https://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Electronic_codebook_.28ECB.29)。我建議使用CBC模式。 – Darhuuk 2012-01-12 09:45:32
@Darhuuk,謝謝,我會檢查一下,你認爲它會解決我的問題嗎? – 2012-01-12 09:48:39
不,分塊密碼模式與您的問題無關。這是由於將加密的字符串轉換爲base64編碼,如下面的答案中所述。 – Darhuuk 2012-01-12 09:51:07