簡體   English   中英

解密TripleDES“壞數據”

[英]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固定它

我的CipherModeECB (電子密碼本)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM