使用AES进行视频加密

潘曼

此代码适用于较小的文件,甚至mp3和大约50mb的视频文件,但当我尝试在c#win应用程序中尝试对较大的视频文件(> 1gb)进行加密时,出现内存不足的错误消息

AES算法:

public byte[] AES_Encrypt(byte[] bytesToBeEncrypted, byte[] passwordBytes)
    {
        byte[] encryptedBytes = null;
        byte[] saltBytes = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8 };
        using (MemoryStream ms = new MemoryStream())
        {
            using (RijndaelManaged AES = new RijndaelManaged())
            {
                AES.KeySize = 256;
                AES.BlockSize = 128;

                var key = new Rfc2898DeriveBytes(passwordBytes, saltBytes, 1000);
                AES.Key = key.GetBytes(AES.KeySize / 8);
                AES.IV = key.GetBytes(AES.BlockSize / 8);

                AES.Mode = CipherMode.CBC;

                using (var cs = new CryptoStream(ms, AES.CreateEncryptor(), CryptoStreamMode.Write))
                {
                    cs.Write(bytesToBeEncrypted, 0, bytesToBeEncrypted.Length);
                    cs.Close();
                }
                encryptedBytes = ms.ToArray();
            }
        }

        return encryptedBytes;
    }

我在这里做错了什么?

卡米洛·特雷文托(Camilo Terevinto)

您的问题很可能是将其作为x86运行,并已为该进程填充了可用的RAM。这样做可以将体系结构更改为x64,因此您唯一的限制是系统中的RAM数量:

  1. 点击构建
  2. 选择“配置管理器”
  3. 在平台下,单击新建
  4. 选择x64作为新平台
  5. 保留默认的“复制设置来自”(任何CPU)
  6. 点击确定
  7. 为解决方案中的每个项目选择x64

如果问题仍然存在,则必须将文件拆分为较小的数组,然后分别使用它们。

代码示例,演示如何分割文件。警告:这是一个示例,并且尚未完全优化:

FileInfo info = new FileInfo(@"D:\SomeMovie.avi");
int bytesToRead = 128 * 1024 * 1024; // 128MB 

byte[] buffer = new byte[bytesToRead]; // create the array that will be used encrypted
long fileOffset = 0;
int read = 0;
bool allRead = false;

while (!allRead)
{
    using (FileStream fs = new FileStream(info.FullName, FileMode.Open, FileAccess.Read))
    {
        fs.Seek(fileOffset, SeekOrigin.Begin); // continue reading from where we were...
        read = fs.Read(buffer, 0, bytesToRead); // read the next chunk
    }

    if (read == 0)
        allRead = true;
    else
        fileOffset += read;

    // encrypt the stuff, do what you need...
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

是否可以实时使用node-webkit文件解码AES加密视频?

来自分类Dev

使用Java进行AES加密和解密

来自分类Dev

使用CryptoJS在javascript中进行AES加密/解密

来自分类Dev

使用AES算法进行加密和解密

来自分类Dev

使用AES加密文件

来自分类Dev

使用openssl和PyCrypto进行AES_128_CTR加密

来自分类Dev

使用CommonCrypto进行Swift AES加密

来自分类Dev

迅速进行AES加密

来自分类Dev

使用C#进行AES加密

来自分类Dev

使用OpenSSL进行AES_128_CBC加密/解密

来自分类Dev

离线播放ExoPlayer中的AES加密视频

来自分类Dev

使用C#对其进行加密,然后使用Android对其进行解密(AES | IllegalBlockSizeException)

来自分类Dev

使用openssl C进行AES(AES-IGE-128,AES-IGE-192,AES-IGE-256)加密/解密

来自分类Dev

使用任何长度的密码在Java中进行AES加密

来自分类Dev

使用CryptoJS在javascript中进行AES加密/解密

来自分类Dev

在C#中使用AESManaged进行AES加密

来自分类Dev

使用Crypto ++密码进行AES加密进行比较

来自分类Dev

使用AES加密文件

来自分类Dev

如何使用phpseclib进行加密和使用AES算法使用Java进行解密

来自分类Dev

使用Spring Security进行AES加密/解密

来自分类Dev

使用CommonCrypto进行Swift AES加密

来自分类Dev

使用phpseclib使用AES进行加密,并使用CryptoJS进行解密

来自分类Dev

使用RSA和AES进行加密/解密;标准?

来自分类Dev

使用CryptoJS进行AES加密并使用CodeIgniter进行解密

来自分类Dev

使用AES的Java加密

来自分类Dev

使用AES算法的图像加密

来自分类Dev

使用OpenSSL / AES进行网络加密的说明

来自分类Dev

如何使用 AES 与 sha256 哈希作为密钥加密 ++ 进行加密

来自分类Dev

使用 AES/ECB/NoPadding 与 PKCS5Padding 进行加密

Related 相关文章

热门标签

归档