zoukankan      html  css  js  c++  java
  • .net aes加密视频等文件

    公司学习平台在app端下载下来的视频需要加密

    随查找资料参考一些写法

    写了aes的加密方法

    记录防止忘记

    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Security.Cryptography;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace ConsoleApplication1
    {
        class Class1
        {
            private const string SKey = "_?73^?dVT3st5har3";
            private const string SaltKey = "!2S@LT&KT3st5har3EY";
            private const int Iterations = 1042; // Recommendation is >= 1000
            static byte[] GetBytes(string str)
            {
                var bytes = new byte[str.Length * sizeof(char)];
                Buffer.BlockCopy(str.ToCharArray(), 0, bytes, 0, bytes.Length);
                return bytes;
            }
            static string GenerateKey()
            {
                // Create an instance of Symetric Algorithm. Key and IV is generated automatically.
                DESCryptoServiceProvider desCrypto = (DESCryptoServiceProvider)DESCryptoServiceProvider.Create();
    
                // Use the Automatically generated key for Encryption. 
                return ASCIIEncoding.ASCII.GetString(desCrypto.Key);
    
            }
            public static void EncryptFile(string srcFilename, string destFilename)
            {
                var aes = new AesManaged();
                aes.BlockSize = 128;
                aes.KeySize = 256;
                var salt = GetBytes(SaltKey);
                var key = new Rfc2898DeriveBytes(SKey, salt, Iterations);
                aes.Key = key.GetBytes(aes.KeySize / 8);
                aes.IV = key.GetBytes(aes.BlockSize / 8);
                aes.Mode = CipherMode.CBC;
                ICryptoTransform transform = aes.CreateEncryptor(aes.Key, aes.IV);
                using (var dest = new FileStream(destFilename, FileMode.CreateNew, FileAccess.Write, FileShare.None))
                {
                    using (var cryptoStream = new CryptoStream(dest, transform, CryptoStreamMode.Write))
                    {
                        using (var source = new FileStream(srcFilename, FileMode.Open, FileAccess.Read, FileShare.Read))
                        {
                            source.CopyTo(cryptoStream);
                        }
                    }
                }
            }
            public static void DecryptFile(string srcFilename, string destFilename)
            {
                var aes = new AesManaged();
                aes.BlockSize = 128;
                aes.KeySize = 256;
                var salt = GetBytes(SaltKey);
                var key = new Rfc2898DeriveBytes(SKey, salt, Iterations);
                aes.Key = key.GetBytes(aes.KeySize / 8);
                aes.IV = key.GetBytes(aes.BlockSize / 8);
                aes.Mode = CipherMode.CBC;
                ICryptoTransform transform = aes.CreateDecryptor(aes.Key, aes.IV);
    
                using (var dest = new FileStream(destFilename, FileMode.CreateNew, FileAccess.Write, FileShare.None))
                {
                    using (var cryptoStream = new CryptoStream(dest, transform, CryptoStreamMode.Write))
                    {
                        try
                        {
                            using (var source = new FileStream(srcFilename, FileMode.Open, FileAccess.Read, FileShare.Read))
                            {
                                source.CopyTo(cryptoStream);
                            }
                        }
                        catch (CryptographicException exception)
                        {
                            throw new ApplicationException("Decryption failed.", exception);
                        }
                    }
                }
            }
        }
    }

    运行

        static void Main(string[] args)
            {
               // Class1.EncryptFile(@"C:kc_Page_2.mp4", @"C:kc_Page_3.mp4");
                //Class1.DecryptFile(@"C:kc_Page_3.mp4", @"C:kc_Page_4.mp4");
                Class1.EncryptFile(@"C:1.docx", @"C:2.docx");
                Class1.DecryptFile(@"C:2.docx", @"C:3.docx");
        
            }
  • 相关阅读:
    旧文备份:利用一个定时器实现多个虚拟定时器的两种方法
    TypeScript type 类型别名
    TypeScript 模块系统
    github----awesome-typescript-projects
    synchronous-request-with-websockets
    async await promise
    Sharing Configuration in ASP.NET Core SPA Scenarios
    Unicode String to a UTF-8 TypedArray Buffer in JavaScript
    MVC 访问静态页面 View 下面放JS
    Processing Binary Protocols with Client-Side JavaScript
  • 原文地址:https://www.cnblogs.com/zhang888/p/4178501.html
Copyright © 2011-2022 走看看