【发布时间】:2011-03-27 02:02:18
【问题描述】:
说我知道:
a) 一些纯文本使用以下 128 位密钥加密: 7, 185,138,208,128,211,227,11,63,145,255,245,1,7,177,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