RSA for big files 03-20-2017, 08:37 PM
#1
Pretty weird and old stuff i did, while being under drugs.
and example usage:
encryption
decryption
just to be clear, this code are not used in FileFrozr
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));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
![[+]](https://sinister.ly/images/modern/collapse_collapsed.png)