/*******************************************************
*
* 作者:朱皖苏
* 创建日期:20180521
* 说明:此文件只包含一个类,具体内容见类型注释。
* 运行环境:.NET 4.0
* 版本号:1.0.0
*
* 历史记录:
* 创建文件 朱皖苏 20180521 20:08
*
*******************************************************/ using System;
using System.IO;
using System.Security.Cryptography;
using System.Text; namespace Dben.CommonLib.Cryptography
{
/// <summary>
/// Aes 加密
/// </summary>
public class AESEncryption
{
/// <summary>
/// AES加密
/// </summary>
/// <param name="encryptString">待加密字符串</param>
/// <param name="key">16位密钥</param>
/// <returns></returns>
public static string EncryptAes(string encryptString, string key)
{
try
{
byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString);
SymmetricAlgorithm des = Aes.Create();
des.Key = Encoding.ASCII.GetBytes(key.Substring(, )); des.IV = Encoding.ASCII.GetBytes(key.Substring());
des.Mode = CipherMode.CBC;
des.Padding = PaddingMode.Zeros; using (MemoryStream mStream = new MemoryStream())
{
using (CryptoStream cStream = new CryptoStream(mStream, des.CreateEncryptor(), CryptoStreamMode.Write))
{
cStream.Write(inputByteArray, , inputByteArray.Length);
cStream.FlushFinalBlock(); byte[] desBytes = mStream.ToArray();
StringBuilder sb = new StringBuilder();
for (int i = ; i < desBytes.Length; i++)
{
sb.Append(desBytes[i].ToString("x2"));
}
return sb.ToString();
}
}
}
catch (Exception)
{
return encryptString;
} } /// <summary>
/// AES解密
/// </summary>
/// <param name="decryptString">解密字符串</param>
/// <param name="key">密钥</param>
/// <returns></returns>
public static string DecryptAes(string decryptString, string key)
{
try
{
byte[] inputByteArray = StrToToHexByte(decryptString);
SymmetricAlgorithm des = Aes.Create();
des.Key = Encoding.ASCII.GetBytes(key.Substring(, )); des.IV = Encoding.ASCII.GetBytes(key.Substring());
des.Padding = PaddingMode.Zeros;
des.Mode = CipherMode.CBC;
MemoryStream mStream = new MemoryStream();
CryptoStream cStream = new CryptoStream(mStream, des.CreateDecryptor(), CryptoStreamMode.Write);
cStream.Write(inputByteArray, , inputByteArray.Length);
cStream.FlushFinalBlock();
byte[] desDecryBytes = mStream.ToArray();
return Encoding.UTF8.GetString(desDecryBytes);
}
catch (Exception)
{
return decryptString;
}
} /// <summary>
/// 转16进制字符串
/// </summary>
/// <param name="hexString">待转换字符串</param>
/// <returns></returns>
private static byte[] StrToToHexByte(string hexString)
{
try
{
hexString = hexString.Replace(" ", "");
if ((hexString.Length % ) != )
hexString += " ";
byte[] returnBytes = new byte[hexString.Length / ];
for (int i = ; i < returnBytes.Length; i++)
returnBytes[i] = Convert.ToByte(hexString.Substring(i * , ), );
return returnBytes;
}
catch (Exception)
{
return null;
}
}
}
}

AESEncryption Aes 加密的更多相关文章

  1. 关于CryptoJS中md5加密以及aes加密的随笔

    最近项目中用到了各种加密,其中就包括从没有接触过得aes加密,因此从网上各种查,官方的一种说法: 高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学 ...

  2. AES加密

    package com.edu.hpu; import java.math.BigInteger; import java.security.MessageDigest; import java.se ...

  3. Android数据加密之Aes加密

    前言: 项目中除了登陆,支付等接口采用rsa非对称加密,之外的采用aes对称加密,今天我们来认识一下aes加密. 其他几种加密方式: Android数据加密之Rsa加密 Android数据加密之Aes ...

  4. c#和js互通的AES加密解密

    一.使用场景 在使用前后端分离的框架中常常会进行传输数据相互加密解密以确保数据的安全性,如web Api返回加密数据客户端或web端进行解密,或者客户端或web端进行加密提交数据服务端解密数据等等. ...

  5. AES加密解密通用版Object-C / C# / JAVA

    1.无向量 128位 /// <summary> /// AES加密(无向量) /// </summary> /// <param name="plainByt ...

  6. nodejs与javascript中的aes加密

    简介 1.aes加密简单来说,在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准.这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用.高级加密标准已然成为对称密钥加 ...

  7. 非对称技术栈实现AES加密解密

    非对称技术栈实现AES加密解密 正如前面的一篇文章所述,https协议的SSL层是实现在传输层之上,应用层之下,也就是说在应用层上看到的请求还是明码的,对于某些场景下要求这些http请求参数是非可读的 ...

  8. Java aes加密C#解密的取巧方法

    摘要: 项目开发过程中遇到一个棘手的问题:A系统使用java开发,通过AES加密数据,B系统使用C#开发,需要从A系统获取数据,但在AES解密的时候遇到麻烦.Java的代码和C#的代码无法互通. Ja ...

  9. AES 加密工具类

    /** * AES 是一种可逆加密算法,对用户的敏感信息加密处理 对原始数据进行AES加密后,在进行Base64编码转化: */public class AESOperator { /* * 加密用的 ...

随机推荐

  1. 微信小程序wx.request 请求方法

    data: 最终发送给服务器的数据是 String 类型,如果传入的 data 不是 String 类型,会被转换成 String .转换规则如下: 对于 GET 方法的数据,会将数据转换成 quer ...

  2. (二)Centos7下Yum更新安装PHP5.5,5.6,7.0

    yum源默认的版本太低了,手动安装有一些麻烦,想采用Yum更新安装的可以使用下面的方案: 1.检查当前安装的PHP包 yum list installed | grep php 如果有安装的PHP包, ...

  3. [转]vue原理简介

    写vue也有一段时间了,对vue的底层原理虽然有一些了解,这里总结一下. vue.js中有两个核心功能:响应式数据绑定,组件系统.主流的mvc框架都实现了单向数据绑定,而双向绑定无非是在单向绑定基础上 ...

  4. uni-app 生命周期函数

    应用生命周期 函数名 说明 onLaunch 当uni-app 初始化完成时触发(全局只触发一次) onShow 当 uni-app 启动,或从后台进入前台显示 onHide 当 uni-app 从前 ...

  5. 2019牛客暑期多校训练营(第二场)F.Partition problem

    链接:https://ac.nowcoder.com/acm/contest/882/F来源:牛客网 Given 2N people, you need to assign each of them ...

  6. vue的filters过滤器的使用

    举个例子,过滤后台转过来的时间格式2019-08-29T02:15:08.000+0000转换为2019-08-29T02:15:08 html部分 <span v-if="item. ...

  7. 2018.12.7 浪在ACM 集训队第八次测试赛

    2018.12.7 浪在ACM 集训队第八次测试赛  https://blog.csdn.net/QLU_minoz/article/details/84886717   感谢苗学林同学C题和D题题解 ...

  8. 基于bmob后端云小程序开发——口袋吉他

    人的一生90%的时间都在做着无聊的事情,社会的发展使得我们的闲暇时间越来越多,我们把除了工作的其他时间放在各种娱乐活动上. 程序员有点特殊,他们把敲代码看成娱乐活动的一部分,以此打发时间的不占少数.这 ...

  9. C#面试题整理2(带答案)

    一.C# 理论 1.1.简述 private. protected. public. internal.protected internal 访问修饰符和访问权限 private : 私有成员, 在类 ...

  10. 关于oppo和vivo这两年强势崛起的反思

    先来谈谈配置吧(小白跳过) oppo产品线 r7 67522015年05月3g2320mAh r7 p 6795 6153g4100mAh r7s 616 67522015年10月4g 3070mAh ...