/*******************************************************
*
* 作者:朱皖苏
* 创建日期: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. css的一些小问题

    这是今天整理的笔记一.属性书写顺序: Formatting Model(布局方式.位置) > Box Model(尺寸) > Typographic(文本相关) > Visual(视 ...

  2. poj2632 累死了

    题意: 给定A*B的格子,放入N个机器人,每个机器人初始位置及朝向给定.给定M条指令.指令类型有三种: 1.L:左转90°      2.R:右转90°       3.F:前进一格 问执行指令过程中 ...

  3. 第三章 通过java SDK 实现个性化智能合约的部署与测试

    想了解相关区块链开发,技术提问,请加QQ群:538327407 前提 已经部署好底层,外网可以正常请求访问. 正常流程 1.基础合约处理 https://fisco-bcos-documentatio ...

  4. 【codeforces 761D】Dasha and Very Difficult Problem

    time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...

  5. Sphinx中文入门指南

    http://www.sphinxsearch.org/sphinx-tutorial 1.简介 1.1.Sphinx是什么 1.2.Sphinx的特性 1.3.Sphinx中文分词 2.安装配置实例 ...

  6. P1077 子串乘积正负分类

    题目描述 给你一个序列包含 \(n\) 个元素的序列 \(a_1, a_2, \dots , a_n\) (每个元素 \(a_i \ne 0\)). 你需要计算如下两个值: 有多少对数 \((l, r ...

  7. liunx printk 函数消息是如何记录的

    printk 函数将消息写入一个   LOG_BUF_LEN 字节长的环形缓存, 长度值从 4 KB 到 1 MB, 由配置内核时选择. 这个函数接着唤醒任何在等待消息的进程, 就是说, 任何在系统 ...

  8. linux 让出处理器

    如我们已见到的, 忙等待强加了一个重负载给系统总体; 我们乐意找出一个更好的技术. 想到的第一个改变是明确地释放 CPU 当我们对其不感兴趣时. 这是通过调用调度函数而 实现地, 在 <linu ...

  9. 【39.68%】【CF 714 C】Filya and Homework

    time limit per test 1 second memory limit per test 256 megabytes input standard input output standar ...

  10. SVG路径无法识别问题

    SVG 路径不规范无法识别 使用 (?<=(,|-))\. 替换为0. 即可