[英]Decrypt TripleDES “Bad Data”
我是加密/解密的新手。 我正在嘗試解密一個加密的輸入字符串,並輸出44個字符。
這是我到目前為止,但在嘗試執行“TransformFinalBlock”函數時,我一直收到“錯誤的數據”。
public static String Decrypt(String input)
{
try{
byte[] inputArray = Convert.FromBase64String(input);
TripleDESCryptoServiceProvider tripleDES = new TripleDESCryptoServiceProvider();
tripleDES.KeySize = 128;
tripleDES.Key = UTF8Encoding.UTF8.GetBytes("0123456789ABCDEF");
tripleDES.IV = UTF8Encoding.UTF8.GetBytes("ABCDEFGH");
tripleDES.Mode = CipherMode.ECB;
tripleDES.Padding = PaddingMode.PKCS7;
ICryptoTransform transform = tripleDES.CreateDecryptor();
byte[] resultArray = transform.TransformFinalBlock(inputArray, 0, inputArray.Length);
tripleDES.Clear();
return UTF8Encoding.UTF8.GetString(resultArray);
}
catch(Exception except){
Debug.WriteLine(except + "\n\n" + except.StackTrace);
return null;
}
}
如果您使用IV,那么您應該使用CipherMode.CBC
。 歐洲央行不使用任何IV。
此外 ,您的數據根本沒有填充,它只包含32個字節。 要測試解密,通常首先嘗試不填充。 這樣,您可以通過查看生成的明文來確定使用哪個填充。
普通的數據太可靠了,不能在這里打印,所以我不會。
我有一個非常類似的問題,我通過改變PaddingMode為無固定它
我的CipherMode是ECB (電子密碼本)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.