는 말 알고리즘의 다소 확실히 만약 내가 알고 :해독 암호 텍스트 키, 일반 텍스트를 알고,
가) 일부 일반 텍스트 키 다음 128 비트 암호화되었습니다 7, 185,138,208,128,211,227,11,63,145,255,245,) MEUxILm04F/S2qSIlJKdPQ의 ==
662-862-4967 (C)의 문자열은 항상 다음베이스 64에 암호화 : 1,7,177,231
b) 빈 문자열은 항상 다음베이스 64에 암호화 된 Zu51CRz6DOsTiLc8KhP1Aw ==
을d) 암호화 방법은 128 비트 블록 크기의 AES 128 일 가능성이 높습니다.
AES가 CBC 모드로 구현 된 경우 사용 된 IV를 백 워드 아웃 할 수 있습니까?
여러 모드에서 RijndaelManaged()를 사용하고 모든 0과 같은 다른 간단한 IV를 사용하여 .net에서 MEUxILm04F/S2qSIlJKdPQ == (base64 이후)의 cypher 텍스트를 다시 만들려고했으나 재현 할 수 없습니다. .
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
난 (제 7 바이트로 누락되었다) 상기 키를 업데이트. 이것을 공부 한 후, 나는 당신과 같은 결론을 내 렸습니다. 감사합니다. 나는 ECB 모드를 사용하여 암호문을 해독 한 다음 16 비트 (PKCS7 패딩)로 채워진 16 바이트 배열을 사용하여 IV를 얻습니다. – klz
16 바이트 배열은 빈 문자열을 나타 내기 위해 16 개의 16으로 패딩되었습니다. – klz