当前位置: 首页 > news >正文

网站免费正能量软件手机企业管理app软件

网站免费正能量软件,手机企业管理app软件,论客企业邮箱官网,深互动平台登录[作者:张赐荣] 对称加密是一种加密技术,它使用相同的密钥来加密和解密数据。换句话说,加密者和解密者需要共享同一个密钥,才能进行通信。 对称加密的优点是速度快,效率高,适合大量数据的加密。对称加密的缺点是密钥的管…

[作者:张赐荣]

对称加密是一种加密技术,它使用相同的密钥来加密和解密数据。换句话说,加密者和解密者需要共享同一个密钥,才能进行通信。
对称加密的优点是速度快,效率高,适合大量数据的加密。对称加密的缺点是密钥的管理和分发比较困难,如果密钥泄露或被破解,那么加密的数据就会失去保密性。
AES是一种高级加密标准,它是一种对称加密算法,也就是说,它使用相同的密钥来加密和解密数据。AES是美国国家标准技术研究所(NIST)在2001年选定的一种加密算法,用于替代旧的DES算法。AES支持三种不同的密钥长度:128位,192位和256位。AES的安全性很高,目前还没有找到有效的攻击方法。

下面两个函数使用AES,加/解密文件。
需要引用 "System.Security.Cryptography" 命名空间。

// 加密文件
        public static async Task<bool> EncryptFileAsync (string inputFilePath, string outputFilePath, string key, Action<double> progressCallback = default, CancellationToken cancellationToken = default)
        {
            HashSet<IDisposable> disposables = new HashSet<IDisposable>();
            try
            {
                var md5 = MD5.Create();
                disposables.Add(md5);
                var md5Key = md5.ComputeHash(Encoding.Unicode.GetBytes(key));
                var aes = Aes.Create();
                disposables.Add(aes);
                aes.Key = md5Key;
                var aesEncryptor = aes.CreateEncryptor();
                disposables.Add(aesEncryptor);
                var inputStream = File.OpenRead(inputFilePath);
                disposables.Add(inputStream);
                var outputStream = File.OpenWrite(outputFilePath);
                disposables.Add(outputStream);
                aes.GenerateIV();
                await outputStream.WriteAsync(aes.IV,0,aes.IV.Length,cancellationToken);
                var encryptoWriterStream = new CryptoStream(outputStream,aesEncryptor,CryptoStreamMode.Write);
                disposables.Add(encryptoWriterStream);
                var buffer = new byte[65536];
                var readLength = -1;
                while ((readLength = await inputStream.ReadAsync(buffer,0,buffer.Length,cancellationToken)) > 0)
                {
                    await encryptoWriterStream.WriteAsync(buffer,0,readLength,cancellationToken);
                    progressCallback?.Invoke(Math.Round(((double)(inputStream.Position +1 - aes.IV.Length) / inputStream.Length) * 100,2));
                }
                if (!encryptoWriterStream.HasFlushedFinalBlock)
                {
                    encryptoWriterStream.FlushFinalBlock();
                    progressCallback?.Invoke(100.00);
                }
                return (true);
            }
            catch (Exception ex)
            {
                return (false);
            }
            finally
            {
                foreach (var disposableObject in disposables)
                {
                    try
                    {
                        disposableObject.Dispose();
                    }
                    catch (Exception ex)
                    {
                        continue;
                    }
                }
            }
        }

// 解密文件
        public static async Task<bool> DecryptFileAsync (string inputFilePath, string outputFilePath, string key, Action<double> progressCallback = default, CancellationToken cancellationToken = default)
        {
            HashSet<IDisposable> disposables = new HashSet<IDisposable>();
            try
            {
                var md5 = MD5.Create();
                disposables.Add(md5);
                var md5Key = md5.ComputeHash(Encoding.Unicode.GetBytes(key));
                var inputStream = File.OpenRead(inputFilePath);
                disposables.Add(inputStream);
                byte[] iv = new byte[16];
                await inputStream. ReadAsync(iv,0,iv.Length,cancellationToken);
                var aes = Aes.Create();
                disposables.Add(aes);
                aes.Key = md5Key;
                aes.IV = iv;
                var aesDecryptor = aes.CreateDecryptor();
                disposables.Add(aesDecryptor);
                var DecryptorReaderStream = new CryptoStream(inputStream,aesDecryptor,CryptoStreamMode.Read);
                disposables.Add(DecryptorReaderStream);
                var outputStream = File.OpenWrite(outputFilePath);
                disposables.Add(outputStream);
                var buffer = new byte[65536];
                var readLength = -1;
                while ((readLength = await DecryptorReaderStream.ReadAsync(buffer,0,buffer.Length,cancellationToken)) > 0)
                {
                    await outputStream.WriteAsync(buffer,0,readLength,cancellationToken);
                    progressCallback?.Invoke(Math.Round(((double)(inputStream.Position + 1) / inputStream.Length) * 100, 2));
                }
                if (!DecryptorReaderStream.HasFlushedFinalBlock)
                {
                    DecryptorReaderStream.FlushFinalBlock();
                    progressCallback?.Invoke(100.00);
                }
                return (true);
            }
            catch (Exception ex)
            {
                return (false);
            }
            finally
            {
                foreach (var disposableObject in disposables)
                {
                    try
                    {
                        disposableObject.Dispose();
                    }
                    catch (Exception ex)
                    {
                        continue;
                    }
                }
            }
        }
 

http://www.yayakq.cn/news/210654/

相关文章:

  • 什么网站都能打开的浏览器家电维修做网站生意怎么样
  • 上海松一网站建设推进门户网站建设 用好用活
  • 中小型网站建设案例网站制作 wordpress
  • 如何查询网站开发语言康定网站建设公司
  • 梁山网站建设价格电商网站开发的意义
  • 健身器械网站建设案例个人网站怎么做
  • 微软网站开发技术医院网站建设案例
  • 成都网站关键词推广做英文网站用目录还是子域名
  • 陌陌网站开发成本简历网免费
  • 外国域名注册网站wordpress 创建数据表
  • 车险保险网站国家工商登记网
  • 做网站运营工作流程设计公司职位
  • 网站免费正能量加载要快自学做网站要多久
  • 网站建站的步骤注册安全工程师官网
  • 北京建立公司网站廊坊网站制作网页
  • 静态网站怎么维护兰州易天网站建设公司有哪些?
  • 编程网站开发wordpress如何链接
  • 网赌网站做流量渗透协会网站改版建议
  • 成都网站制作东三环免费网站建设编辑器
  • 手机建站哪家好wordpress支付文件在哪里设置
  • 网站系统下载网站推广话术与技巧
  • 成都网站建设哪家强西峰网
  • 做网站根据内容生成pdf贷款客户大数据精准获客
  • 公司网站建设 公司简介怎么写车间管理系统
  • 十大网站app软件下载中国建设银行北京市分行网站
  • 银行内部网站建设建议镇平县两学一做网站
  • 公司招聘网站 哪个部门做建个人博客网站
  • 北京网站优化外包用虚拟主机好还是阿里云wordpress
  • 深圳网站高端建设网站网页设计html
  • 阿里云网站建设考试认证题深圳的网站建设公司pestl分析