使用AES加密的帮助类
在开发中经常使用加密/解密对一些内容进行处理,比如密码在存入数据库之前先经过加密处理等等,这里就把一个加密帮助类代码贴出来,供以后查找使用。
这个帮助类主要功能是对字符串和字节数组进行加密解密处理。
public class EncryptionHelper
{
//默认密钥向量
private static readonly byte[] DefaultKey = {0x12, 0x34, 0x56, 120, 0x90, 0xab, 0xcd, 0xef}; /// <summary>
/// 解密字节数组
/// </summary>
/// <param name="cipherBytes">密文字节数组</param>
/// <param name="password">密钥</param>
/// <returns>解密后字节数组</returns>
public static byte[] DecryptBytes(byte[] cipherBytes, string password)
{
byte[] buffer;
try
{
using (Aes aes = new AesManaged())
{
//设置密钥及密钥向量
aes.Key = new Rfc2898DeriveBytes(password, DefaultKey).GetBytes(0x10);
aes.IV = aes.Key;
using (var memoryStream = new MemoryStream())
{
using (
var cryptoStream = new CryptoStream(memoryStream, aes.CreateDecryptor(),
CryptoStreamMode.Write))
{
cryptoStream.Write(cipherBytes, 0, cipherBytes.Length);
cryptoStream.Flush();
}
//得到解密后的字节数组
buffer = memoryStream.ToArray();
}
}
}
catch
{
buffer = null;
}
return buffer;
} /// <summary>
/// 解密字符串
/// </summary>
/// <param name="cipherText">密文</param>
/// <param name="password">密钥</param>
/// <returns>解密后字符串</returns>
public static string DecryptString(string cipherText, string password)
{
byte[] decryptBytes = DecryptBytes(Convert.FromBase64String(cipherText), password);
if (decryptBytes == null)
{
return null;
}
return Encoding.UTF8.GetString(decryptBytes, 0, decryptBytes.Length);
} /// <summary>
/// 加密字节数组
/// </summary>
/// <param name="plainBytes">明文字节数组</param>
/// <param name="password">密钥</param>
/// <returns>加密后字节数组</returns>
public static byte[] EncryptBytes(byte[] plainBytes, string password)
{
byte[] buffer;
try
{
using (Aes aes = new AesManaged())
{
//设置密钥及密钥向量
aes.Key = new Rfc2898DeriveBytes(password, DefaultKey).GetBytes(0x10);
aes.IV = aes.Key;
using (var memoryStream = new MemoryStream())
{
using (
var cryptoStream = new CryptoStream(memoryStream, aes.CreateEncryptor(),
CryptoStreamMode.Write))
{
cryptoStream.Write(plainBytes, 0, plainBytes.Length);
cryptoStream.FlushFinalBlock();
}
//得到加密后的字节数组
buffer = memoryStream.ToArray();
}
}
}
catch
{
buffer = null;
}
return buffer;
} /// <summary>
/// 加密字符串
/// </summary>
/// <param name="plainText">明文</param>
/// <param name="password">密钥</param>
/// <returns>加密后字符串</returns>
public static string EncryptString(string plainText, string password)
{
byte[] cipherBytes = EncryptBytes(Encoding.UTF8.GetBytes(plainText), password);
if (cipherBytes == null)
{
return null;
}
return Convert.ToBase64String(cipherBytes);
}
}
使用AES加密的帮助类的更多相关文章
- AES加密解密 助手类 CBC加密模式
"; string result1 = AESHelper.AesEncrypt(str); string result2 = AESHelper.AesDecrypt(result1); ...
- AES加密解密工具类封装(AESUtil)
package club.codeapes.common.utils; import org.springframework.util.Base64Utils; import javax.crypto ...
- php的AES加密、解密类
<?php /** * php.ios.Android 通用的AES加密.解密方法 */ namespace Common\Business; class AESCrypt { /** * 初始 ...
- 自写AES加密解密工具类
此类主要用于加密与解密,采用128位ECB模式,PKCS5Padding填充补位. 可使用方法为加密返回二进制encryptBin(content, key).加密返回十六进制encryptHex(c ...
- 使用AES加密的勒索类软件分析报告
报告名称: 某勒索类软件分析报告 作者: 李东 报告更新日期: 样本发现日期: 样本类型: 样本文件大小/被感染文件变化长度: 样本文件MD5 校验值: da4ab5e31793 ...
- AES加密解密的例子小结
话不多说,先放上代码,一共有两个文件:AES.php(aes算法类文件)和aesDemo.php(应用实例文件),这里只贴出aesDemo.php,其他的看附件吧!aesDemo.php: 例子, ...
- 【Android工具】DES终结者加密时报——AES加密演算法
转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992 在前面的两篇文章中.我们介绍了DES算法,3DES算法以及他们的Android程序实现,并研究了怎样才干实现 ...
- java独立小程序实现AES加密和解密
一.需求: web项目中配置文件配置的密码是明文的, 现在需要修改成密文, 加密方式采用AES, 于是写了个工具类用于加密和解密. 又因为这个密码是由客户来最终确定, 所以为了部署时方便起见, 写了个 ...
- php AES加密解密的例子
一共有两个文件:AES.php(aes算法类文件)和aesDemo.php(应用实例文件) aesDemo.php:例子, <?php require_once('./AES.php'); // ...
随机推荐
- ni
坚强歌词 马天宇 - 坚强 天使的翅膀挥动着的光芒一路走来学会了坚强每一次你努力认真的模样让我很欣赏 雨天的路上会有一缕阳光温暖被淋湿的希望再小的河也能汇成海洋让我去远航 一路上陪伴我的目光是最感动的 ...
- 启动Activity,传递参数最佳实践
优化后的好处不言而喻,OtherActivity中所需要的参数都在方法参数中体现,减少了交流询问的成本. (1)MainActivity.java OtherActivity.openActivity ...
- Android DatePickerDialog 只选择年月
//对EditText注册OnTouch事件etSscxNssbDate.setOnTouchListener(selectDateTouchListener); //选择日期 private OnT ...
- QTableView使用HTML显示富文本
对于QTableView中的显示,我们前面介绍过很多种,其中包括:文本.进度条.复选框等,今天我们介绍一下关于富文本的显示. 可能绝大多数小伙伴会通过QAbstractTableModel中的data ...
- DeflateStream类
DeflateStream是另外一种压缩与解压缩流,使用方法与GZipStream类似,而且压缩之后的带下也差不多. 一.属性 BaseStream 获取对基础流的引用. CanRead 获取一个值 ...
- OpenWrt修改
openwrt如何编译修改界面的顶部.底部信息.LOGO图片 2011-06-02 16:20:03 浏览次 以Atheros71xx为例,修改路径为:trunk/build_dir/target ...
- 360极速浏览器 HTML5实验室
360极速浏览器 HTML5实验室 HTML5 实验室
- cocos2dx CCControlButton button大事
=================================.cpp文件 <pre name="code" class="cpp">bool ...
- Linux下JDK的安装
1.首先到官网上下载 jdk-7u7-linux-x64.tar.gz 2.将jdk-7u7-linux-x64.tar.gz拷贝到/usr/lib/jdk/目录下面,这里如果没有jdk文件夹,则创建 ...
- mysql 5.5源码包安装
注:由于mysql5.5的源码包安装与mysql之前的版本安装方法不同,故写一篇随笔记录.5.5的版本不再是./configure make make install 这里用到了cmake了,cmak ...