我使用這個功能在我UWP項目數據加密:解密使用AES失敗
public string Encrypt(string text, string key)
{
byte[] buffer = Encoding.UTF8.GetBytes(text);
byte[] sessionKey = Encoding.UTF8.GetBytes(key);
Aes myAes = Aes.Create();
myAes.Mode = CipherMode.ECB;
myAes.KeySize = 128;
myAes.Key = sessionKey;
myAes.Padding = PaddingMode.PKCS7;
ICryptoTransform encryptor = myAes.CreateEncryptor();
buffer = encryptor.TransformFinalBlock(buffer, 0, buffer.Length);
return Convert.ToBase64String (buffer);
}
但在解密從加密()返回的數據,我得到不同的結果(不等於文本參數Encrypt())。我使用下面的代碼:
public string Decrypt(string text, string key)
{
byte[] buffer = Convert.FromBase64String(text);
byte[] sessionKey = Encoding.UTF8.GetBytes(key);
Aes myAes = Aes.Create();
myAes.Mode = CipherMode.ECB;
myAes.KeySize = 128;
myAes.Key = sessionKey;
myAes.Padding = PaddingMode.PKCS7;
ICryptoTransform decryptor = myAes.CreateDecryptor();
buffer = decryptor.TransformFinalBlock(buffer, 0, buffer.Length);
return Convert.ToBase64String(buffer);
}
我使用加密和解密使用相同的密鑰
UPDATE: 文本參數傳遞給加密():450131283 :: 0300DC98050044C406000100040052C40100626B02007E810900660F
自加密()返回文本: 「lzkPu35Hq7j52IiMWRYSS6j7Vg84abVmhXmNpSxHShJDTbOqkZRFtsPZkEzTsjgRT4MzRHCQUS6MCiq1e5JCune4bZZi1nxxwHtEjZLKZ9E =」
我傳遞給解密()方法,我也得到了以下同(以上)值: 「NDUwMTMxMjgzOjowMzAwREM5ODA1MDA0NEM0MDYwMDAxMDAwNDAwNTJDNDAxMDA2MjZCMDIwMDdFODEwOTAwNjYwRg ==」
不同的結果?不是錯誤?解密應該正常工作或失敗。 – Crowcoder
@Crowcoder我認爲是一樣的,但發現如果我使用錯誤的IV解密,除了前16個字節之外的所有內容都可以正常解密,並且不會拋出異常。如果你顯示輸入和輸出ravi,可能會有所幫助。 – Kevin
@凱文,我更新了我的答案。解密失敗。 –