Login Register


RSA for big files filter_list
Author
Message
RSA for big files #1
Pretty weird and old stuff i did, while being under drugs.
Code:
class RSAforbigfiles { public byte[] Encrypt(byte[] filetoencrypt, RSACryptoServiceProvider rsa ) { int i; byte[] encryptedData; int blockSize = (rsa.KeySize / 8) - 32; int rsablock= (rsa.KeySize / 8); byte[] dataToEncrypt = filetoencrypt; int repets = dataToEncrypt.Length / blockSize; byte[] dataaftercrypt = new byte[rsablock * (repets + 1)]; byte[] buffer = new byte[blockSize]; int lastblock = dataToEncrypt.Length - (repets * blockSize); for (i = 0; i < repets; i++) { Array.Copy(dataToEncrypt, blockSize * i, buffer, 0, blockSize); encryptedData = rsa.Encrypt(buffer, false); Array.Copy(encryptedData, 0, dataaftercrypt, rsablock * i, rsablock); } Array.Copy(dataToEncrypt, blockSize * (i), buffer, 0, lastblock); encryptedData = rsa.Encrypt(buffer, false); Array.Copy(encryptedData, 0, dataaftercrypt, rsablock * i, rsablock); return dataaftercrypt; } public byte[] Decrypt (byte[] filetoDecrypt, string privatekey, RSACryptoServiceProvider rsa) { rsa.FromXmlString(privatekey); int blockSize = (rsa.KeySize / 8); byte[] dataToDencrypt = filetoDecrypt; int repets = dataToDencrypt.Length / blockSize - 1; byte[] decryptedBytes = new byte[dataToDencrypt.Length]; byte[] buffer = new byte[blockSize]; byte[] decryptedbuf; int decrlenght; Array.Copy(dataToDencrypt, buffer, blockSize); decryptedbuf = rsa.Decrypt(buffer, false); Array.Copy(decryptedbuf, decryptedBytes, decryptedbuf.Length); decrlenght = decryptedbuf.Length; for (int i = 1; i <= repets; i++) { Array.Copy(dataToDencrypt, blockSize * i, buffer, 0, blockSize); decryptedbuf = rsa.Decrypt(buffer, false); Array.Copy(decryptedbuf, 0, decryptedBytes, decrlenght, decryptedbuf.Length); decrlenght = decrlenght + decryptedbuf.Length; } byte[] orgfilemassive = new byte[decrlenght]; Array.Copy(decryptedBytes, orgfilemassive, decrlenght); return orgfilemassive; } }

and example usage:
encryption
Code:
RSAforbigfiles RSA = new RSAforbigfiles(); RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(4096); string privateKey = rsa.ToXmlString(true); string publicKey = rsa.ToXmlString(false); File.WriteAllText("rsaprivate.xml", privateKey); File.WriteAllBytes(file, RSA.Encrypt (File.ReadAllBytes(file), rsa));
decryption
Code:
RSAforbigfiles RSA = new RSAforbigfiles(); RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(4096); string keyString = File.ReadAllText(textBox1.Text); File.WriteAllBytes(file, RSA.Decrypt(File.ReadAllBytes(file), keyString, rsa));

just to be clear, this code are not used in FileFrozr

Reply







Users browsing this thread: 1 Guest(s)