Кто-нибудь знаком с использованием MD5CryptoServiceProvider, TripleDESCryptoServiceProvider и ICryptoTransform? введите описание изображения здесь Я успешно зашифровал файл и записал его с StreamWriter в текстовый файл, но возникают проблемы при чтении файла с помощью StreamReader и попытке расшифровать текст.
В сообщении об ошибке утверждается, что «ввод не является допустимой строкой Base-64, так как содержит неосновной 64-символ, более двух символов заполнения или недопустимый символ среди символов заполнения».
Файл был зашифрован с использованием следующего кода:
string datetime = DateTime.Now.ToString();
string hash = (encrypted file here);
byte[] data = UTF8Encoding.UTF8.GetBytes(hash);
using (MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider())
{
byte[] keys = md5.ComputeHash(UTF8Encoding.UTF8.GetBytes(hash));
using (TripleDESCryptoServiceProvider tripDes = new TripleDESCryptoServiceProvider() { Key = keys, Mode = CipherMode.ECB, Padding = PaddingMode.PKCS7 })
{
ICryptoTransform transforms = tripDes.CreateEncryptor();
byte[] results = transforms.TransformFinalBlock(data, 0, data.Length);hash = Convert.ToBase64String(results, 0, results.Length);
}
Код дешифрования выглядит следующим образом:
byte[] data = Convert.FromBase64String(text source here);
using (MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider())
{
byte[] keys = md5.ComputeHash(UTF8Encoding.UTF8.GetBytes(text source here));
using (TripleDESCryptoServiceProvider tripDes = new TripleDESCryptoServiceProvider() { Key = keys, Mode = CipherMode.ECB, Padding = PaddingMode.PKCS7 })
{
ICryptoTransform transforms = tripDes.CreateDecryptor();
byte[] results = transforms.TransformFinalBlock(data, 0, data.Length);
(text source here) = UTF32Encoding.UTF8.GetString(results);
}
}
Я пробовал его со всеми параметрами заполнения, чтобыбезрезультатно.Любые идеи, предложения или обоснованные предположения о том, как решить проблему?
Известно ли, что StreamWriter добавляет дополнительные символы в зашифрованный текст, вызывающий эту проблему?Если да, то какой метод вы рекомендуете для шифрования и дешифрования файла в C #?