簡體   English   中英

如何解密 AES CBC?

[英]How to decrypt AES CBC?

我使用 此鏈接來測試解密 AES CBC。

這是我的參數:

在此處輸入圖像描述

這項工作。 然后我用 C# 實現。 我的代碼:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Web;

namespace HHT.Module.eWallet.Helper
{
    public class AESHelper
    {
        private AesCryptoServiceProvider _aes;
        private ICryptoTransform _crypto;

        public AESHelper(string key, string IV)
        {
            _aes = new AesCryptoServiceProvider();
            _aes.BlockSize = 128;
            _aes.KeySize = 256;
            _aes.Key = ASCIIEncoding.ASCII.GetBytes(key);
            if (!string.IsNullOrEmpty(IV)) {
                _aes.IV = ASCIIEncoding.ASCII.GetBytes(IV);
            }
        
            _aes.Padding = PaddingMode.PKCS7;
            _aes.Mode = CipherMode.CBC;
        }

        public string encrypt(string message)
        {
            _crypto = _aes.CreateEncryptor(_aes.Key, _aes.IV);
            byte[] encrypted = _crypto.TransformFinalBlock(
                ASCIIEncoding.ASCII.GetBytes(message), 0, ASCIIEncoding.ASCII.GetBytes(message).Length);
            _crypto.Dispose();
            return System.Convert.ToBase64String(encrypted);
        }

        public string decrypt(string message)
        {
            _crypto = _aes.CreateDecryptor(_aes.Key, _aes.IV);
            byte[] decrypted = _crypto.TransformFinalBlock(
                System.Convert.FromBase64String(message), 0, System.Convert.FromBase64String(message).Length);
            _crypto.Dispose();
            return ASCIIEncoding.ASCII.GetString(decrypted);
        }
    }
}  

function decrypt不起作用,它返回錯誤的字符串。 我覺得有些參數和圖片不一樣。

Base64 編碼的加密數據:

5qG6aB4UZ6bnbbPgFhnC+qp/FJ7ZuZ+fg1cYm+OUM1uP/6PyWfLg0w5bJstmBf2W

鑰匙:

745d88b1e8f75d320c2bd9198c08485d

您需要將 IV 初始化為全零,否則它以隨機值開頭:

if (!string.IsNullOrEmpty(IV))
{
    _aes.IV = ASCIIEncoding.ASCII.GetBytes(IV);
}
else
{
    _aes.IV = new byte[_aes.BlockSize / 8];
}

使用此修復程序,它會獲得與您使用的在線站點相同的結果

另請注意,您的問題是 ECB,但您的代碼和屏幕截圖使用 CBC(它是 AES,而不是 ACS)。

暫無
暫無

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

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