Сценарий - у меня на сервере несколько файлов, и в соответствии с политикой мы можем хранить только зашифрованные файлы. Мы выполняем некоторую миграцию данных, для этого мы должны переместить эти файлы в облако, и, согласно документации, Base64 - лучший способ передачи зашифрованных данных по сети. Я новичок в шифровании и застрял между этим. Сообщите мне, если это поможет вам.
Как сохранить файл в формате base64?
================================================================
Я новичок в шифровании, получил код из сети и пытался зашифровать файлы с помощью RijndaelManaged
, и следующий код работает нормально
public static void EncryptFile(string inputFile, string outputFile)
{
try
{
string password = @"myKey123"; // Your Key Here
UnicodeEncoding UE = new UnicodeEncoding();
byte[] key = UE.GetBytes(password);
string cryptFile = outputFile;
FileStream fsCrypt = new FileStream(cryptFile, FileMode.Create);
RijndaelManaged RMCrypto = new RijndaelManaged();
CryptoStream cs = new CryptoStream(fsCrypt,
RMCrypto.CreateEncryptor(key, key),
CryptoStreamMode.Write);
FileStream fsIn = new FileStream(inputFile, FileMode.Open);
int data;
while ((data = fsIn.ReadByte()) != -1)
cs.WriteByte((byte)data);
fsIn.Close();
cs.Close();
fsCrypt.Close();
}
catch
{
}
}
Когда я пытаюсь расшифровать с помощью Convert.FromBase64String
, возвращается ошибка
public static string DecryptFile(string inputFile)
{
var myRijndael = new RijndaelManaged { Key = _key, IV = _key, Padding = PaddingMode.PKCS7 };
_decryptor = myRijndael.CreateDecryptor(myRijndael.Key, myRijndael.IV);
// Create the streams used for decryption.
using (MemoryStream msDecrypt = new MemoryStream(Convert.FromBase64String(inputFile)))
{
using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, _decryptor, CryptoStreamMode.Read))
{
using (StreamReader srDecrypt = new StreamReader(csDecrypt))
{
return srDecrypt.ReadToEnd();
}
}
}
}
Пожалуйста, помогите мне решить эту проблему
Base64
- это очень странно, почему вы ожидаете, что он будет в этом формате и конвертируете из него .... - person Andy Korneyev   schedule 09.02.2017using
вEncryptFile
или хотя быfinally
. О, и добавьте еще один вокруг вашихRijndaelManaged
экземпляров, он реализуетIDisposable
. - person gobes   schedule 09.02.2017key = UE.GetBytes(password);
очень неправильно. ПосмотритеPasswordDeriveBytes
. - person Henk Holterman   schedule 09.02.2017catch{}
. - person Henk Holterman   schedule 09.02.2017The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding characters, or an illegal character among the padding characters
. Как я могу сохранить зашифрованный файл в формате Base64? - person Ajay   schedule 10.02.2017byte[]
и б) транспортировку / хранение с использованием строк Base64. - person Henk Holterman   schedule 11.02.2017