我正在通過.Net處理mvc應用程序,以保護web.config中的敏感信息我的模型中有兩個函數使用Triple DES加密和解密信息,但是我這是新的,併成功達到這裏在朋友的幫助下,並在這裏問一些在線幫助。在這兩種加密無法解析符號GetSHA256String
Cannot resolve symbol GetSHA256String
和解密在使用這種方法的功能:
但現在當我米試圖在我的電腦中執行代碼正在此錯誤。
我在這裏是否缺少一個目錄?請幫助我解決這個問題。
public static string Encrypt(string Message, string Passphrase, out byte[] iv)
{
byte[] Results;
System.Text.UTF8Encoding UTF8 = new System.Text.UTF8Encoding();
MD5CryptoServiceProvider HashProvider = new MD5CryptoServiceProvider();
byte[] TDESKey = HashProvider.ComputeHash(UTF8.GetBytes(GetSHA256String(Passphrase)));
TripleDESCryptoServiceProvider TDESAlgorithm = new TripleDESCryptoServiceProvider();
TDESAlgorithm.Key = TDESKey;
TDESAlgorithm.Mode = CipherMode.ECB;
TDESAlgorithm.Padding = PaddingMode.PKCS7;
// Capture the randomly generated IV
iv = TDESAlgorithm.IV;
byte[] DataToEncrypt = UTF8.GetBytes(Message);
try
{
ICryptoTransform Encryptor = TDESAlgorithm.CreateEncryptor();
Results = Encryptor.TransformFinalBlock(DataToEncrypt, 0, DataToEncrypt.Length);
}
finally
{
TDESAlgorithm.Clear();
HashProvider.Clear();
}
return Convert.ToBase64String(Results);
//return Encoding.UTF8.GetString(Results);
}
public static string Decrypt(string Message, string Passphrase, byte[] iv)
{
byte[] Results;
System.Text.UTF8Encoding UTF8 = new System.Text.UTF8Encoding();
MD5CryptoServiceProvider HashProvider = new MD5CryptoServiceProvider();
byte[] TDESKey = HashProvider.ComputeHash(UTF8.GetBytes(GetSHA256String(Passphrase)));
TripleDESCryptoServiceProvider TDESAlgorithm = new TripleDESCryptoServiceProvider();
TDESAlgorithm.Key = TDESKey;
// Apply the same IV used during encryption
TDESAlgorithm.IV = iv;
TDESAlgorithm.Mode = CipherMode.ECB;
TDESAlgorithm.Padding = PaddingMode.PKCS7;
try
{
byte[] DataToDecrypt = Convert.FromBase64String(Message);
//byte[] DataToDecrypt = UTF8.GetBytes(Message);
//byte[] DataToDecrypt = Encoding.UTF8.GetBytes(Message);
ICryptoTransform Decryptor = TDESAlgorithm.CreateDecryptor();
Results = Decryptor.TransformFinalBlock(DataToDecrypt, 0, DataToDecrypt.Length); // << ERROR is here.
}
finally
{
TDESAlgorithm.Clear();
HashProvider.Clear();
}
return UTF8.GetString(Results);
}
所以你說你可以編譯應用程序('Ctrl + Shift + b'),但是你在運行時會出現這個錯誤? – 2012-07-08 15:44:10
你正在用你甚至沒有意識到的方法構建代碼?很明顯,你需要但沒有這個名字的方法。 – 2012-07-08 16:50:23
@GregS我認爲他一直在使用從某個地方找到的引用方法的代碼,但沒有提供所述方法的源代碼。我添加了一個我認爲他需要的方法,因爲我的回答讓我們看看他是否需要這個方法。 – 2012-07-09 00:52:08