我使用這個功能,使用加密AES,因爲它看起來簡單,乾淨(googl'ed代碼)C#AES功能沒有返回預期的結果
public static string Encrypt(string toEncrypt)
{
byte[] keyArray = UTF8Encoding.UTF8.GetBytes("3a8114db34d5623d4fd1ee0fb0ga7a73"); // 256-AES key
byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(toEncrypt);
RijndaelManaged rDel = new RijndaelManaged();
rDel.Key = keyArray;
rDel.Mode = CipherMode.CBC;
rDel.Padding = PaddingMode.PKCS7; // better lang support
ICryptoTransform cTransform = rDel.CreateEncryptor();
byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
return Convert.ToBase64String(resultArray, 0, resultArray.Length);
}
public static string Decrypt(string toDecrypt)
{
byte[] keyArray = UTF8Encoding.UTF8.GetBytes("3a8114db34d5623d4fd1ee0fb0ga7a73"); // AES-256 key
byte[] toEncryptArray = Convert.FromBase64String(toDecrypt);
RijndaelManaged rDel = new RijndaelManaged();
rDel.Key = keyArray;
rDel.Mode = CipherMode.CBC;
rDel.Padding = PaddingMode.PKCS7; // better lang support
ICryptoTransform cTransform = rDel.CreateDecryptor();
byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
return UTF8Encoding.UTF8.GetString(resultArray);
}
我試圖對數據進行加密/解密數據「測試垃圾」和多數民衆贊成我收到回:
YfhyS3GE/liPCaXR0cMHfQ ==
不過,我嘗試了很多的網上AES加密的相同的密鑰/短語/解密,所有的日EM正在返回
U2FsdGVkX184u0/vPgA/B0rxofp5Iuqm7hfn4 + QZAhg =
誰能居然告訴我,什麼是錯?
你的類是相當真棒,但並沒有解決我的問題。 我想知道這些在線加密/解密是如何工作的,因爲它們都給出了相同的結果,我試驗了10個函數,但沒有一個輸出相同的結果。 – Alexandre
如果這是你的問題,你應該包括你的「大量的在線加密/解密服務」,因爲一般來說,即使你運行了兩次,一個好的aes加密實現也不會給出相同的結果,但它不應該與隨機數據區分開來。這就是爲什麼你有一個IV,爲什麼你通常將它與你的密文一起包括進來,而爲了解密它,你通常必須有一個一致的連線格式,典型的做法是把IV先添加到你的密文中,但這不是標準。 – jbtule
我只是認爲他們應該是平等的,那麼你的回答是正確的,並會改變我的實施。 – Alexandre