Ich verwende die OpenSSL Crypto-Bibliothek in meinem C#-Projekt, um Dateien zu verschlüsseln/entschlüsseln. Hier ist mein Code :
byte[] key = System.Text.Encoding.ASCII.GetBytes("password");
byte[] iv = System.Text.Encoding.ASCII.GetBytes("1234");
OpenSSL.Crypto.CipherContext cc = new OpenSSL.Crypto.CipherContext(
OpenSSL.Crypto.Cipher.AES_256_ECB);
FileStream fIn = new FileStream("C:\\file.txt", FileMode.Open,
FileAccess.Read);
FileStream fOut = new FileStream("C:\\encrypted.txt", FileMode.OpenOrCreate,
FileAccess.Write);
fOut.SetLength(0);
byte[] bin = new byte[100];
long rdlen = 0;
long totlen = fIn.Length;
int len;
DateTime start = DateTime.Now;
while (rdlen < totlen)
{
// argument 1
len = fIn.Read(bin, 0, 100);
// argument 2
fOut.Write(cc.Crypt(bin,key,iv,true),0,100);
rdlen = rdlen + len;
}
fOut.Flush();
fOut.Close();
fIn.Close();
Als Ergebnis habe ich diese Ausnahme erhalten:
Verschiebung und Länge lagen außerhalb des Arrays oder die Anzahl ist größer als die Anzahl der Elemente ab dem Index bis zum Ende der Quellensammlung.
Als ich die Werte von Argument 1 und 2 von 100 auf 64 (bin immer noch byte[100]) geändert habe, hat es funktioniert, die Datei wurde verschlüsselt und entschlüsselt, aber die Größe der entschlüsselten Datei war größer als die Originaldatei und enthielt am Ende der Textdatei 1 oder 2 zusätzliche Zeilen.