Je suis capable de chiffrer un fichier zip en utilisant rijndeal mais quand je déchiffre, j'obtiens une erreur qui dit "La longueur des données à déchiffrer est invalide" Im obtenant le tableau d'octets déchiffrer à partir d'un fichier. Voici comment j'obtiens le tableau d'octets.Rijndael Erreur de déchiffrement - La longueur des données à déchiffrer est invalide
Dim FStream As FileStream = File.OpenRead("<Filepath>")
EncData = New Byte(FStream.Length) {}
FStream.Read(EncData, 0, EncData.Length)
Dim DecryptedBytes As Byte() = DataVault.RijndealController.Decrypt(EncData, Password)
Une fois que je passe le tableau d'octets dans la méthode Décrypter je reçois l'erreur lorsque je tente de lire le CryptoStream.
Public Function Decrypt(ByVal Input As Byte(), ByVal Password As String) As Byte()
Try
Dim PasswordBytes As Byte() = Encoding.UTF8.GetBytes(Password)
Dim initVectorBytes As Byte() = Encoding.ASCII.GetBytes("@0B4c3D4e5Y6r7H2")
Dim SaltValue As Byte() = Encoding.UTF8.GetBytes("[email protected]|u<")
Dim DerivedBytes As Rfc2898DeriveBytes = New Rfc2898DeriveBytes(PasswordBytes,SaltValue, 4)
Dim keyBytes As Byte() = DerivedBytes.GetBytes(32)
Dim symmetricKey As RijndaelManaged
symmetricKey = New RijndaelManaged()
symmetricKey.Mode = CipherMode.CBC
Dim decryptor As ICryptoTransform
decryptor = symmetricKey.CreateDecryptor(keyBytes, initVectorBytes)
Dim memoryStream As MemoryStream
memoryStream = New MemoryStream(Input)
Dim cryptoStream As CryptoStream
cryptoStream = New CryptoStream(memoryStream, decryptor, CryptoStreamMode.Read)
Dim plainTextBytes As Byte()
ReDim plainTextBytes(Input.Length)
Dim decryptedByteCount As Integer
While ((decryptedByteCount = cryptoStream.Read(plainTextBytes, 0, plainTextBytes.Length)) > 0)
End While
memoryStream.Close()
cryptoStream.Close()
Return plainTextBytes
Catch ex As Exception
Return Nothing
End Try
End Function
Aucune idée de ce que je fais mal?
Aussi voici le code qu'ils encrypte:
Public Function EncryptBytes(ByVal Input As Byte(), ByVal Password As String) As Byte()
Try
Dim PasswordBytes As Byte() = Encoding.UTF8.GetBytes(Password)
Dim initVectorBytes As Byte() = Encoding.ASCII.GetBytes("@0B4c3D4e5Y6r7H2")
Dim SaltValue As Byte() = Encoding.UTF8.GetBytes("[email protected]|u<")
Dim InputStringBytes As Byte() = Input
Dim DerivedBytes As Rfc2898DeriveBytes = New Rfc2898DeriveBytes(PasswordBytes, SaltValue, 4)
Dim keyBytes As Byte() = DerivedBytes.GetBytes(32)
Dim symmetricKey As RijndaelManaged
symmetricKey = New RijndaelManaged
symmetricKey.Mode = CipherMode.CBC
Dim encryptor As ICryptoTransform
encryptor = symmetricKey.CreateEncryptor(keyBytes, initVectorBytes)
Dim MStream As New MemoryStream()
Dim cryptoStream As CryptoStream
cryptoStream = New CryptoStream(MStream, encryptor, CryptoStreamMode.Write)
cryptoStream.Write(InputStringBytes, 0, InputStringBytes.Length)
cryptoStream.FlushFinalBlock()
Dim cipherBytes As Byte() = MStream.ToArray()
MStream.Close()
cryptoStream.Close()
Return cipherBytes
Catch ex As Exception
End Try
Return Encoding.UTF8.GetBytes("0")
End Function
Voulez-vous dire Rijndael? C'est le nom normal ... –
Pouvez-vous inclure le code qui crypte le fichier zip? – russau
Oui i ment Rijndael – Thomas