C#使用RijndaelManaged加密 - 以base64格式保存文件

时间:2017-02-09 14:05:57

标签: c# encryption rijndael rijndaelmanaged

场景 - 我的服务器上有多个文件,根据策略,我们只能保留加密文件。我们正在进行一些数据迁移,为此我们必须将这些文件移动到云端,并且根据文档,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();
                    }
                }
            }
        }

请帮我解决这个问题

0 个答案:

没有答案