AES 算法加密(ECB模式) 将明文加密,加密后进行base64编码,返回密文

        /// <summary>
/// AES 算法加密(ECB模式) 将明文加密,加密后进行base64编码,返回密文
/// </summary>
/// <param name="EncryptStr">明文</param>
/// <param name="Key">密钥</param>
/// <returns>加密后base64编码的密文</returns>
public static string AesEncryptor_Base64(string EncryptStr, string Key)
{
try
{
//byte[] keyArray = Encoding.UTF8.GetBytes(Key);
byte[] keyArray = Convert.FromBase64String(Key);
byte[] toEncryptArray = Encoding.UTF8.GetBytes(EncryptStr); RijndaelManaged rDel = new RijndaelManaged();
rDel.Key = keyArray;
rDel.Mode = CipherMode.ECB;
rDel.Padding = PaddingMode.PKCS7; ICryptoTransform cTransform = rDel.CreateEncryptor();
byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, , toEncryptArray.Length); return Convert.ToBase64String(resultArray, , resultArray.Length);
}
catch (Exception ex)
{
return null;
}
}

AES 算法解密(ECB模式) 将密文base64解码进行解密,返回明文

        /// <summary>
/// AES 算法解密(ECB模式) 将密文base64解码进行解密,返回明文
/// </summary>
/// <param name="DecryptStr">密文</param>
/// <param name="Key">密钥</param>
/// <returns>明文</returns>
public static string AesDecryptor_Base64(string DecryptStr, string Key)
{
try
{
//byte[] keyArray = Encoding.UTF8.GetBytes(Key);
byte[] keyArray = Convert.FromBase64String(Key);
byte[] toEncryptArray = Convert.FromBase64String(DecryptStr); RijndaelManaged rDel = new RijndaelManaged();
rDel.Key = keyArray;
rDel.Mode = CipherMode.ECB;
rDel.Padding = PaddingMode.PKCS7; ICryptoTransform cTransform = rDel.CreateDecryptor();
byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, , toEncryptArray.Length); return Encoding.UTF8.GetString(resultArray);// UTF8Encoding.UTF8.GetString(resultArray);
}
catch (Exception ex)
{
return null;
}
}

AES 算法加密(ECB模式) 将明文加密,加密后进行Hex编码,返回密文

        /// <summary>
///AES 算法加密(ECB模式) 将明文加密,加密后进行Hex编码,返回密文
/// </summary>
/// <param name="str">明文</param>
/// <param name="key">密钥</param>
/// <returns>加密后Hex编码的密文</returns>
public static string AesEncryptor_Hex(string str, string key)
{
if (string.IsNullOrEmpty(str)) return null;
Byte[] toEncryptArray = Encoding.UTF8.GetBytes(str); System.Security.Cryptography.RijndaelManaged rm = new System.Security.Cryptography.RijndaelManaged
{
Key = StrToHexByte(key),
Mode = System.Security.Cryptography.CipherMode.ECB,
Padding = System.Security.Cryptography.PaddingMode.PKCS7
}; System.Security.Cryptography.ICryptoTransform cTransform = rm.CreateEncryptor();
Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, , toEncryptArray.Length); return ToHexString(resultArray);
}

AES 算法解密(ECB模式) 将密文Hex解码后进行解密,返回明文

        /// <summary>
///AES 算法解密(ECB模式) 将密文Hex解码后进行解密,返回明文
/// </summary>
/// <param name="str">密文</param>
/// <param name="key">密钥</param>
/// <returns>明文</returns>
public static string AesDecryptor_Hex(string str, string key)
{
if (string.IsNullOrEmpty(str)) return null;
Byte[] toEncryptArray = StrToHexByte(str); System.Security.Cryptography.RijndaelManaged rm = new System.Security.Cryptography.RijndaelManaged
{
Key = StrToHexByte(key),
Mode = System.Security.Cryptography.CipherMode.ECB,
Padding = System.Security.Cryptography.PaddingMode.PKCS7
}; System.Security.Cryptography.ICryptoTransform cTransform = rm.CreateDecryptor();
Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, , toEncryptArray.Length); return Encoding.UTF8.GetString(resultArray);
}

byte数组Hex编码与字符串进行Hex解码(Hex.decodeHex())

        /// <summary>
/// byte数组Hex编码
/// </summary>
/// <param name="bytes">需要进行编码的byte[]</param>
/// <returns></returns>
public static string ToHexString(byte[] bytes) // 0xae00cf => "AE00CF "
{
string hexString = string.Empty;
if (bytes != null)
{
StringBuilder strB = new StringBuilder();
for (int i = ; i < bytes.Length; i++)
{
strB.Append(bytes[i].ToString("X2"));
}
hexString = strB.ToString();
}
return hexString;
}
/// <summary>
/// 字符串进行Hex解码(Hex.decodeHex())
/// </summary>
/// <param name="hexString">需要进行解码的字符串</param>
/// <returns></returns>
public static byte[] StrToHexByte(string hexString)
{
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;
}

AES加密、解密封装

        /// <summary>
/// 对象转成Json并加密
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public string DataAes(object str)
{
string json_str = new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(str);
string miwen = AESCryptos.AesEncryptor_Base64(json_str, key);
return miwen;
} /// <summary>
/// 解密并Json解析成对象
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public T JsonToModel<T>(string str)
{
string mingwen = AESCryptos.AesDecryptor_Base64(str, key);
System.Web.Script.Serialization.JavaScriptSerializer jss = new System.Web.Script.Serialization.JavaScriptSerializer();
T Model = jss.Deserialize<T>(mingwen);
return Model;
} /// <summary>
/// 解密并Json解析成list
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public IList<T> JsonToList<T>(string str)
{
string mingwen = AESCryptos.AesDecryptor_Base64(str, key);
System.Web.Script.Serialization.JavaScriptSerializer jss = new System.Web.Script.Serialization.JavaScriptSerializer();
IList<T> list = jss.Deserialize<List<T>>(mingwen);
return list;
}

Base64加密

string str= "汉字";
str= Convert.ToBase64String(UnicodeEncoding.UTF8.GetBytes(str));

Base64解密

string str= HttpUtility.UrlDecode(Request["str"], System.Text.Encoding.UTF8).Replace(" ", "+");
str= UnicodeEncoding.UTF8.GetString(Convert.FromBase64String(str));

C# AES 加密与解密的更多相关文章

  1. Php AES加密、解密与Java互操作的问题

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html 内部邀请码:C8E245J (不写邀请码,没有现金送) 国 ...

  2. 探讨数据进行AES加密和解密以及.NET Core对加密和解密为我们提供了什么?

    前言 对于数据加密和解密每次我都是从网上拷贝一份,无需有太多了解,由于在.net core中对加密和解密目前全部是统一了接口,只是做具体的实现,由于遇到过问题,所以将打算基本了解下其原理,知其然足矣, ...

  3. 探讨.NET Core中实现AES加密和解密以及.NET Core为我们提供了什么方便!

    前言 对于数据加密和解密每次我都是从网上拷贝一份,无需有太多了解,由于在.net core中对加密和解密目前全部是统一了接口,只是做具体的实现,由于遇到过问题,所以将打算基本了解下其原理,知其然足矣, ...

  4. Oracle的AES加密与解密用法

    Oracle的AES加密与解密用法2013年12月11日 11:50:35 iteye_751 阅读数:428--加密字符串create or replace function des3_enc( i ...

  5. java独立小程序实现AES加密和解密

    一.需求: web项目中配置文件配置的密码是明文的, 现在需要修改成密文, 加密方式采用AES, 于是写了个工具类用于加密和解密. 又因为这个密码是由客户来最终确定, 所以为了部署时方便起见, 写了个 ...

  6. php的AES加密、解密类

    <?php /** * php.ios.Android 通用的AES加密.解密方法 */ namespace Common\Business; class AESCrypt { /** * 初始 ...

  7. java与C#、.NET AES加密、解密 解决方案

      1.情景展示 Java提供的密钥,C#无法解密. 2.原因分析 在Java中,AES的实际密钥需要用到KeyGenerator 和 SecureRandom,但是C#和.NET 里面没有这2个类, ...

  8. java AES加密、解密(兼容windows和linux)

      java AES加密.解密 CreationTime--2018年7月14日10点06分 Author:Marydon 1.准备工作 updateTime--2018年8月10日15点28分 up ...

  9. polarssl rsa & aes 加密与解密

    上周折腾加密与解密,用了openssl, crypto++, polarssl, cyassl, 说起真的让人很沮丧,只有openssl & polarssl两个库的RSA & AES ...

随机推荐

  1. Android从文件读取图像显示的效率问题

    因为从文件读取图像到Bitmap是一件比较费时的事情,所以研究了一下几种可行的办法,并做了对比. 首先解释一下为什么耗时,这是因为,在从jpg或者png文件中读取Bitmap时,一来需要对外存进行操作 ...

  2. Python之XML解析详解

    什么是XML? XML 指可扩展标记语言(eXtensible Markup Language). XML 被设计用来传输和存储数据. XML是一套定义语义标记的规则,这些标记将文档分成许多部件并对这 ...

  3. linux shell搜索某个字符串,然后在后面加上字符串?字符串后面插入字符串?sed字符串后面插入字符串?

    需求描述: 今天在配置nrpe.cfg这个文件,里面有allowed_hosts的IP地址,需要加上监控主机的地址,所以首先要搜索 到这个地址,然后呢,加上监控主机的地址,考虑通过sed命令来实现 操 ...

  4. 【2018年12月05日】滚动市盈率PE最低排名

    深康佳A(SZ000016) - 滚动市盈率PE:1.69 - 滚动市净率PB:1.13 - 滚动年化股息收益率:4.31% - 消费电子产品 - 深康佳A(SZ000016)的历史市盈率走势图 新钢 ...

  5. js合并.css合并工具

    http://www.neoease.com/css-javascript-combo-tool/ http://www.neoease.com/minimize-javascript-files-u ...

  6. [hadoop] hdfs 格式化错误 java.net.UnknownHostException

    执行 hdfs namenode -format 抛出错误 主机名称异常,查看主机信息 原来 通过 bogon 无法找到主机 ,在host 中也没有对应的映射信息 修改后即可 再次执行 hdfs na ...

  7. CM和CDH的安装-准备工作

    估计要分开来两篇博客说明,因为截图较多. 1.三个节点cdh1(主节点),cdh2,cdh3 配置就用一张图来说明,因为资源有限 2.版本依赖说明: CDH-5.9.0-1.cdh5.9.0.p0.2 ...

  8. js防止表单重复提交

    1.表单 <form id="addForm" onsubmit="getElementById('submitInput').disabled=true;retu ...

  9. 与MQ通讯的完整JAVA程序

    该程序实现了发送消息与读取消息的功能,见其中的 send***与get***方法.这只适合于测试,因为环境中的程序还需要对此有稍微的更改,在真实的环境中肯定是在while(true){...} 的无限 ...

  10. flask获取传入参数的两种方式

    #coding=utf-8 from flask import Flask from flask import request app = Flask(__name__) @app.route(&qu ...