Bitte den Php Code für die Verschlüsselung posten. Wichtig sind u.a. welche Php Funktion, woher du IV hast, in welchem Format die Dateien geschrieben werden, Blocklänge und welche Optionen wie ECB verwendet wurden. Jede Kleinigkeit muss bei der Entschlüsselung genau passen. (AES hat Blocklänge 128, aber man spricht oft relativ locker von Aes wenn man eigentlich Rijndael meint). Php arbeitet ausserdem hauptsächlich mit Strings, was zu Problemen führen kann weil alle Cryptoalgorithmen Bytes bearbeiten. Da es oft nicht ausreichend dokumentiert ist wie Php die Strings in Bytes umwandelt (oder zurück) muss man oft einfach experimentieren um alles richtig zu reproduzieren. Die Datenlänge muss übrigens ein Mehrfach der Blocklänge sein, wobei Paddingalgorithmus auch stimmen muss (bei dem Beispiel hier .Zeros, was nicht üblich ist weil nicht eindeutig rückgängig zu machen).
Wenn man das Beispiel von dieser Seite nimmt was die Php mcrypt Funktion verwendet
http://www.chilkatsoft.com/p/php_aes.asp
und alles entsprechend anpasst klappt die Entschlüsselung einwandfrei.
Private Sub PhpAesDecryption()
Dim rd As New RijndaelManaged
Dim sIV As String = "1234567890123456"
' (hex: 31323334353637383930313233343536)
Dim sKey As String = "1234567890123456"
' (hex: 31323334353637383930313233343536)
'PlainText:
' "The quick brown fox jumped over the lazy dog"
' CipherText von Php (hex):
Dim encdata As Byte() = {&HF7, &H81, &H76, &HAE, &H8D, &HFE, &H84, _
&H57, &H85, &H29, &H20, &H8D, &H30, &HF4, &H46, &HBB, &HB2, &H9A, _
&H64, &HDC, &H38, &H8B, &H5C, &HB, &H63, &H14, &HA, &H4F, &H31, &H6B, _
&H3F, &H34, &H1F, &HE7, &HD3, &HB1, &HA3, &HCC, &H51, &H13, &HC8, _
&H1E, &HF8, &HDD, &H71, &H4A, &H1C, &H99}
Dim ivdata() As Byte = Encoding.ASCII.GetBytes(sIV)
Dim keydata() As Byte = Encoding.ASCII.GetBytes(sKey)
Dim ms As New IO.MemoryStream(encdata)
rd.IV = ivdata
rd.Key = keydata
rd.Mode = CipherMode.CBC
rd.Padding = PaddingMode.Zeros
Dim cs As New CryptoStream(ms, rd.CreateDecryptor, _
CryptoStreamMode.Read)
Dim data(encdata.Length - 1) As Byte
Dim i As Integer = cs.Read(data, 0, encdata.Length)
Dim cleartext As String = Encoding.ASCII.GetString(data, 0, i)
'Ergebnis = "The quick brown fox jumped over the lazy dog
' (+ 4 Nullbytes) Yay!
cs.Close()
rd.Clear()
End Sub ________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist |