のやや確かに私がいることを知っていると言う知っている場合:復号化暗号文キー、プレーンテキスト、およびアルゴリズム
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)暗号化方法は128ビットブロックサイズのAES 128である可能性が高い。
AESがCBCモードで実装されていた場合に使用されたIVをバックアウトすることは可能ですか?
さまざまなモードでRijndaelManaged()を使用し、すべての零点のような異なる単純IVを使用して、ネットで、MEUxILm04F/S2qSIlJKdPQ ==(base64の後)のサイファーテキストを再作成しようとしましたが、再現できません。
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
を。これを勉強した後、私は同じ結論に達しました。ありがとうございます。私はECBモードを使用して暗号文を解読し、16バイト配列(PKCS7パディング)でxを取得してIVを得ました。 – klz
16バイトの配列に空の文字列を表す16個の16をパディングしました。 – klz