【问题标题】:Decrypt cipher text if know key, plain text, and somewhat sure of algorithm如果知道密钥、纯文本和对算法有一定把握,则解密密文
【发布时间】:2011-03-27 02:02:18
【问题描述】:

说我知道:

a) 一些纯文本使用以下 128 位密钥加密: 7, 185,138,208,128,211,227,11,63,145,255,245,1,7,17​​7,231

b) 空字符串始终加密为以下 base64:MEUxILm04F/S2qSIlJKdPQ==

c) 662-862-4967 的字符串始终加密为以下 base64:Zu51CRz6DOsTiLc8KhP1Aw==

d) 加密方法可能是 AES 128,块大小为 128 位。

如果在 CBC 模式下实施 AES,是否可以(和/或直接)撤销使用的 IV?

我一直在尝试在各种模式下使用 RijndaelManaged() 以及(在适用的情况下)不同的简单 IV(如全零)在 .net 中重新创建 MEUxILm04F/S2qSIlJKdPQ==(base64 之后)的密码文本,但我无法重现。

这是我用来尝试加密空白字符串以获取 MEUxILm04F/S2qSIlJKdPQ== 的代码 使用上面的键输入(注释行是我尝试过的东西):

Public Shared Function Encrypt(ByVal toEncrypt As String, ByVal keyArray As [Byte]()) As String

      Dim toEncryptArray As Byte() = UTF8Encoding.UTF8.GetBytes(toEncrypt)

      'Dim IV As Byte() = New Byte() {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
      Dim IV As Byte() = New Byte(15) {}

      Dim rDel As New RijndaelManaged()
      rDel.KeySize = 128
      rDel.BlockSize = 128

      rDel.IV = IV

      rDel.Key = keyArray
      'rDel.Mode = CipherMode.ECB   
      rDel.Mode = CipherMode.CBC

      rDel.Padding = PaddingMode.PKCS7
      'rDel.Padding = PaddingMode.Zeros

      Dim cTransform As ICryptoTransform = rDel.CreateEncryptor()
      Dim resultArray As Byte() = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length)
      Return Convert.ToBase64String(resultArray, 0, resultArray.Length)
   End Function

【问题讨论】:

    标签: aes encryption


    【解决方案1】:

    CBC mode 中,IV 与明文加密之前进行异或。

    因此,使用空明文提取第一个块的 IV(您的输出均为 128 位)等效于使用您的密钥解密该块。

    但是,您的“128 位密钥”似乎短了 8 位,所以我无法计算 IV。

    我对 OpenSSL 使用了以下参数:

    echo 'MEUxILm04F/S2qSIlJKdPQ==' | \
    openssl enc -d -base64 | \
    openssl enc -d -aes-128-ecb -K 'B98AD080D3E30B3F91FFF50107B1E7'
    

    【讨论】:

    • 我更新了上面的密钥(第一个字节缺少 7)。经过研究,我得出了与您相同的结论,谢谢。我使用 ECB 模式用密钥解密密文,然后用一个用 16 填充的 16 字节数组(PKCS7 填充)来异或得到 IV。
    • 16 字节数组用十六个 16 填充以表示空字符串。
    猜你喜欢
    • 1970-01-01
    • 2013-01-02
    • 1970-01-01
    • 1970-01-01
    • 2013-06-02
    • 1970-01-01
    • 2014-10-24
    • 2022-08-03
    • 1970-01-01
    相关资源
    最近更新 更多