×

目录

[1]AES加密算法和DES加密算法的效率比较 [2]AES和DES加密解密代码

随着开发时间的变长,当初认为比较难的东西,现在渐渐也就变的不那么难了!特别对于一些经常很少使用的类,时间长了之后渐渐就陌生了。所以在这里写一些日后可能会用到的加密与解密。

一.AES加密算法和DES加密算法的效率比较:

下面是在网上看到的一段关于“ES加密程序和一个AES加密程序,比较两个程序进行大文件加密的效率”:

  • 实验步骤:

  • 实验结果:

  • 结果分析:

当文件很小时,两个程序加密的时间差不多。但是当文件变大时,DES对文件的加密效率低于AES对文件的加密效率。可见AES具有比DES更好的安全性,效率!

二.AES和DES加密解密代码:

========DES加密========
/// <summary>///  DES加密/// </summary>/// <param name="pToEncrypt">要加密的内容</param>/// <param name="sKey">密钥</param>/// <param name="StrMs">输出加密后的字符串</param>/// <returns>加密后的byte数组</returns>public static byte[] Encrypt(string pToEncrypt, string sKey, out string StrMs){//访问数据加密标准(DES)算法的加密服务提供程序 (CSP) 版本的包装对象DESCryptoServiceProvider des = new DESCryptoServiceProvider();des.Mode = CipherMode.ECB;des.Padding = PaddingMode.PKCS7;des.Key = Encoding.UTF8.GetBytes(sKey); //建立加密对象的密钥和偏移量//des.IV = Encoding.UTF8.GetBytes(sKey);  // 如果是用ECB模式,则IV不管是什么都不会影响加密/解密的结果byte[] inputByteArray = Encoding.UTF8.GetBytes(pToEncrypt);//把字符串放到byte数组中
MemoryStream ms = new MemoryStream();//创建其支持存储区为内存的流 CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);//定义将数据流链接到加密转换的流cs.Write(inputByteArray, 0, inputByteArray.Length);//上面已经完成了把加密后的结果放到内存中去
        cs.FlushFinalBlock();        StringBuilder ret = new StringBuilder();foreach (byte b in ms.ToArray()){ret.AppendFormat("{0:X2}", b);}StrMs = ret.ToString();return ms.ToArray();}/// <summary>/// DEs 解密过程/// </summary>/// <param name="pToDecrypt">被解密的字符串</param>/// <param name="sKey">密钥(只支持8个字节的密钥,同前面的加密密钥相同)</param>/// <returns>返回被解密的字符串</returns>public static string Decrypt(string pToDecrypt, string sKey){DESCryptoServiceProvider des = new DESCryptoServiceProvider();des.Mode = CipherMode.ECB;des.Padding = PaddingMode.PKCS7;byte[] inputByteArray = new byte[pToDecrypt.Length / 2];for (int x = 0; x < pToDecrypt.Length / 2; x++){int i = (Convert.ToInt32(pToDecrypt.Substring(x * 2, 2), 16));inputByteArray[x] = (byte)i;}des.Key = Encoding.UTF8.GetBytes(sKey); //建立加密对象的密钥和偏移量,此值重要,不能修改//des.IV = Encoding.UTF8.GetBytes(sKey);// 如果是用ECB模式,则IV不管是什么都不会影响加密/解密的结果MemoryStream ms = new MemoryStream();CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);cs.Write(inputByteArray, 0, inputByteArray.Length);cs.FlushFinalBlock();return System.Text.Encoding.UTF8.GetString(ms.ToArray());}

/// <summary>/// AES加密/// </summary>/// <param name="toEncrypt">要加密的内容</param>/// <param name="strKey">密钥(16或者32位)</param>/// <returns>Base64转码后的密文</returns>public static string Encrypt(string toEncrypt, string strKey){byte[] keyArray = UTF8Encoding.UTF8.GetBytes(strKey);byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(toEncrypt);RijndaelManaged rDel = new RijndaelManaged();//using System.Security.Cryptography;    rDel.Key = keyArray;rDel.Mode = CipherMode.ECB;//using System.Security.Cryptography;    rDel.Padding = PaddingMode.PKCS7;//using System.Security.Cryptography;
ICryptoTransform cTransform = rDel.CreateEncryptor();//using System.Security.Cryptography;    byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);return Convert.ToBase64String(resultArray, 0, resultArray.Length);}/// <summary>/// AES解密/// </summary>/// <param name="toDecrypt">要解密的内容</param>/// <param name="strKey">密钥(16或者32位)</param>/// <returns>解密后的明文</returns>public static string Decrypt(string toDecrypt, string strKey){byte[] keyArray = UTF8Encoding.UTF8.GetBytes(strKey);byte[] toEncryptArray = Convert.FromBase64String(toDecrypt);RijndaelManaged rDel = new RijndaelManaged();rDel.Key = keyArray;rDel.Mode = CipherMode.ECB;rDel.Padding = PaddingMode.PKCS7;ICryptoTransform cTransform = rDel.CreateDecryptor();byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);return UTF8Encoding.UTF8.GetString(resultArray);}#endregion AES解密
}

转载于:https://www.cnblogs.com/fengxuehuanlin/p/5266362.html

DES加密解密与AES加密解密相关推荐

  1. aes js 加盐值 解密_crypto-js aes加密解密

    安装 npm install crypto-js --save unit.js import CryptoJS from "crypto-js"; //秘钥 const CRYPT ...

  2. java php aes加密解密_php aes 加密解密可与java对接

    php aes 加密解密可与java对接 博主:liu1693 发表时间:2017-02-23 16:52:27 浏览量:100 class Encrypt{ //加密方法 public static ...

  3. aes离线解密工具_如何在Python中解密OpenSSL AES加密文件?

    OpenSSL为AES加密提供了一种流行的(但不安全 - 见下文!)命令行界面: openssl aes-256-cbc -salt -in filename -out filename.enc Py ...

  4. aes 加密_PHP使用AES加密和解密

    php中文网最新课程 每日17点准时技术干货分享 AES加密在php5的版本中使用的mcrypt_decrypt 函数,该函数已经在php7.1后弃用了: 取而代之的是openssl的openssl_ ...

  5. php文件aes128解密工具,aes加密解密

    aes加密解密类 使用方法:$str = Aes:: encrypt(json_encode(array('111'=>'test')),$key); 文件:<?php class Aes ...

  6. BASE64加密解密---前端 AES 加密解密

    在做项目的时候,要求base64加密传输,和java后端试了很多,就这个比较合适 首先先下包 npm i crypto-js --save 封装 import CryptoJS from " ...

  7. nodejs php aes加密解密,nodejs aes 加解密实例

    如下所示: 'use strict'; const crypto = require('crypto'); /** * AES加密的配置 * 1.密钥 * 2.偏移向量 * 3.算法模式CBC * 4 ...

  8. 0宽字符加密_前端AES加密方式分析,及其python实现

    在前端常见的加密方式中AES很少使用,因为相对于非对称的RSA安全性很低,AES是典型的对称加密,密钥就在前端源码里. 案列网站是http://ewt360.com,一个并不复杂的网站,首先抓个包看看 ...

  9. aes js 加盐值 解密_cryptoJS AES 加解密简单使用

    简单记录一下,前端利用 cryptoJS 如何加解密的.主要是关于 AES 加解密. 需求描述:需要对 url 中的参数进行 AES 解密,然后再把该参数进行 MD5 加密通过接口传递. AES AE ...

最新文章

  1. mysql 选项_mysql常用选项
  2. jqgrid 单元格绑定点击事件_自定义事件带参数的触发过程
  3. 配置swagger2_Springboot(三十五)启用Swagger2
  4. VTK:可视化之QuadricVisualization
  5. 买卖股票的最佳时机—leetcode121
  6. stylus之内置方法(Built-in Functions)
  7. 线程八大核心+java并发核心知识体系精讲_Java从业者如果不懂这些,面试80%都会挂在这些核心知识上面...
  8. 安装Frida抓包工具
  9. 20-10-023-安装-KyLin-2.5.2-单机版安装(MAC)成功
  10. 大数据之-Hadoop3.x_MapReduce_Combiner概述---大数据之hadoop3.x工作笔记0118
  11. Kubernetes-2018干货盘点
  12. shell脚本验证ssh连通性_ssh远程管理服务
  13. Elasticsearch: 配置文件详解
  14. 小D课堂 - 新版本微服务springcloud+Docker教程_4-05 微服务调用方式之feign 实战 订单调用商品服务...
  15. 远程设备运维云平台软件与常规组态软件的区别(V1.1)?
  16. 皮尔逊相关系数和斯皮尔曼相关系数(等级系数)与典型相关分析
  17. C#:实现读取网卡信息
  18. OpenGLSL中处理HDR.ToneMapping(HLG)
  19. Latex中插图总结
  20. CGAL 基础知识(学习笔记)

热门文章

  1. 如此接私活So easy:给开发者,PM,设计师
  2. CentOS 7 源码编译MariaDB 5.5.46
  3. 使用vm server 虚拟机上安装oracle-rac 共享磁盘错误解决
  4. Linux Shell常用技巧(十)
  5. android 如何使用LaunchMode
  6. Hierarchy-Viewer架构
  7. Java之toString()方法详解
  8. InnoDB中一棵B+树能存多少行数据
  9. Git新建分支出现fatal: Not a valid object name: ‘master‘错误
  10. kotlin学习笔记——Kotlin Android Extensions