У меня есть два метода, которые используют в них шифрование и дешифрование, что я делаю, это чтение данных файла зашифрованным и изменение файла с зашифрованными данными, эта операция выполняется правильно, но когда я иду на дешифрование зашифрованных данных, я не возвращаю значение не оригинальна, если я вернулся странные символы: Эти функции:Мне не удалось должным образом расшифровать зашифрованные данные в файле с помощью метода Rijndael в C#?
public void EncryptFile(string[] conexion)
{
var mydocpath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
var inputFile = mydocpath + @"\ProjectCONFIG.sigc";
const string password = @"*PROJECT-CONFIG-FILE-ENCRYPTED-2016*"; // Your Key Here
var cryptFile = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
var fsEncrypt = new FileStream(inputFile, FileMode.Create);
var rmCrypto = new RijndaelManaged();
Rfc2898DeriveBytes pwdGen = new Rfc2898DeriveBytes(password, 10000);
rmCrypto.BlockSize = 256;
byte[] key = pwdGen.GetBytes(rmCrypto.KeySize/8); //This will generate a 256 bits key
byte[] iv = pwdGen.GetBytes(rmCrypto.BlockSize/8); //This will generate a 256 bits IV
var cs = new CryptoStream(fsEncrypt, rmCrypto.CreateEncryptor(key, iv), CryptoStreamMode.Write);
StreamWriter streamWriter = new StreamWriter(cs);
streamWriter.WriteLine(conexion);
streamWriter.Close();
cs.Close();
fsEncrypt.Close();
}
public string DecryptFile(string inputFile)
{
const string password = @"*PROJECT-CONFIG-FILE-ENCRYPTED-2016*"; // Your Key Here
var cryptFile = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
var fsEncrypt = new FileStream(inputFile, FileMode.Create);
var rmCrypto = new RijndaelManaged();
Rfc2898DeriveBytes pwdGen = new Rfc2898DeriveBytes(password, 10000);
rmCrypto.BlockSize = 256;
byte[] key = pwdGen.GetBytes(rmCrypto.KeySize/8); //This will generate a 256 bits key
byte[] iv = pwdGen.GetBytes(rmCrypto.BlockSize/8); //This will generate a 256 bits IV
var cs = new CryptoStream(fsEncrypt, rmCrypto.CreateEncryptor(key, iv), CryptoStreamMode.Read);
StreamReader streamReader = new StreamReader(cs);
string conexion = streamReader.ReadLine();
streamReader.Close();
cs.Close();
fsEncrypt.Close();
return conexion;
}
Любые предложения ......
Вы генерируете другой ключ и iv для дешифрования. – Plutonix
@Plutonix Напиши мне ответ, как и должно быть, если не слишком большой дискомфорт. –
Вы используете 'rmCrypto.CreateEncryptor' во время дешифрования. Это должен был быть 'rmCrypto.CreateDecryptor'. Это вопрос опечатки и должен быть закрыт. –