Ich möchte Datei von Single-Datei-Stream verschlüsseln, aber ich habe diesen Fehler, wenn Entschlüsselung Padding ist ungültig und kann nicht entfernt werden, aber Verschlüsselung und Entschlüsselungsmethode hat gleiche Polsterung, wenn ich Padding einstellen. Zeros nicht verschlüsselt DateiC# Rijandel Datei Entschlüsselung Padding ist ungültig und kann nicht entfernt werden
private static readonly byte[] SALT = new byte[] { 0x26, 0xdc, 0xff, 0x00, 0xad, 0xed, 0x7a, 0xee, 0xc5, 0xfe, 0x07, 0xaf, 0x4d, 0x08, 0x22, 0x3c };
Rfc2898DeriveBytes pdb = new Rfc2898DeriveBytes("TestKey", SALT);
public bool EncryptFileP(string Path)
{
FileInfo IOF = new FileInfo(Path);
WRStream = new FileStream(Path, FileMode.Open);
CryptoStream cryptoStream;
Rijndael rijndael = Rijndael.Create();
rijndael.Key = pdb.GetBytes(16);
rijndael.IV = pdb.GetBytes(16);
rijndael.Mode = CipherMode.CBC;
rijndael.Padding = PaddingMode.PKCS7;
cryptoStream = new CryptoStream(WRStream, rijndael.CreateEncryptor(), CryptoStreamMode.Write);
cryptoStream.Close();
WRStream.Close();
return true;
}
public bool DecryptFileP(string Path)
{
FileInfo IOF = new FileInfo(Path);
WRStream = new FileStream(Path, FileMode.Open);
CryptoStream cryptoStream;
Rijndael rijndael = Rijndael.Create();
rijndael.Key = pdb.GetBytes(16);
rijndael.IV = pdb.GetBytes(16);
rijndael.Mode = CipherMode.CBC;
rijndael.Padding = PaddingMode.PKCS7;
cryptoStream = new CryptoStream(WRStream, rijndael.CreateDecryptor(), CryptoStreamMode.Write);
cryptoStream.Close(); //error! padding is invalid and cannot be removed
WRStream.Close();
return true;
}
Das bedeutet, dass die Entschlüsselung fehlgeschlagen ist, mindestens eine der verschlüsselten Daten, IV, Schlüssel oder Parameter sind inkorrekt oder sind die falsche Dencding . Mit PKCS # 7 padding die richtige Sache zu verwenden. – zaph
Wenn eine der angegebenen Antworten Ihr Problem gelöst hat, können Sie [eine der Antworten akzeptieren] (http://meta.stackexchange.com/q/5234/266187). Wenn nicht, dann erweitern Sie bitte, was falsch ist. –