C#的AES加密解密(ECB)
测试网站:在线AES加密解密、AES在线加密解密、AES encryption and decryption
输出类型不同,则选择不同的获得byte数组方式
//base64
Byte[] encryptedBytes = Convert.FromBase64String(Data);
//hex
//Byte[] encryptedBytes = hexStringToByteArray(Data);
本段代码来源:AES加密解密通用版Object-C / C# / JAVA
/// <summary>
/// AES加密(无向量)
/// </summary>
/// <param name="plainBytes">被加密的明文</param>
/// <param name="key">密钥</param>
/// <returns>密文</returns>
private static string AESEncrypt(String Data, String Key)
{MemoryStream mStream = new MemoryStream();RijndaelManaged aes = new RijndaelManaged();byte[] plainBytes = Encoding.UTF8.GetBytes(Data);Byte[] bKey = new Byte[32];Array.Copy(Encoding.UTF8.GetBytes(Key.PadRight(bKey.Length)), bKey, bKey.Length);aes.Mode = CipherMode.ECB;aes.Padding = PaddingMode.PKCS7;aes.KeySize = 128;//aes.Key = _key; aes.Key = bKey;//aes.IV = _iV; CryptoStream cryptoStream = new CryptoStream(mStream, aes.CreateEncryptor(), CryptoStreamMode.Write);try{cryptoStream.Write(plainBytes, 0, plainBytes.Length);cryptoStream.FlushFinalBlock();return Convert.ToBase64String(mStream.ToArray());}finally{cryptoStream.Close();mStream.Close();aes.Clear();}
}/// AES解密(无向量)
/// </summary>
/// <param name="encryptedBytes">被加密的明文</param>
/// <param name="key">密钥</param>
/// <returns>明文</returns>
private static string AESDecrypt(String Data, String Key)
{//base64Byte[] encryptedBytes = Convert.FromBase64String(Data);//hex//Byte[] encryptedBytes = hexStringToByteArray(Data);Byte[] bKey = new Byte[32];Array.Copy(Encoding.UTF8.GetBytes(Key.PadRight(bKey.Length)), bKey, bKey.Length);MemoryStream mStream = new MemoryStream(encryptedBytes);//mStream.Write( encryptedBytes, 0, encryptedBytes.Length ); //mStream.Seek( 0, SeekOrigin.Begin ); RijndaelManaged aes = new RijndaelManaged();aes.Mode = CipherMode.ECB;aes.Padding = PaddingMode.PKCS7;aes.KeySize = 128;aes.Key = bKey;//aes.IV = _iV; CryptoStream cryptoStream = new CryptoStream(mStream, aes.CreateDecryptor(), CryptoStreamMode.Read);try{byte[] tmp = new byte[encryptedBytes.Length + 32];int len = cryptoStream.Read(tmp, 0, encryptedBytes.Length + 32);byte[] ret = new byte[len];Array.Copy(tmp, 0, ret, 0, len);return Encoding.UTF8.GetString(ret);}finally{cryptoStream.Close();mStream.Close();aes.Clear();}
}
十六进制字符串转byte数组
/// <summary>
///
/// </summary>
/// <param name="s"></param>
/// <returns></returns>
private byte[] hexStringToByteArray(string strHex)
{strHex = strHex.Replace(" ", "");byte[] buffer = new byte[strHex.Length / 2];for (int i = 0; i < strHex.Length; i += 2){buffer[i / 2] = (byte)Convert.ToByte(strHex.Substring(i, 2), 16);}return buffer;
}
C#的AES加密解密(ECB)相关推荐
- Javascript实现AES加密解密(ECB/CBC)
环境配置 js文件https://code.google.com/archive/p/crypto-js/downloads 在线AES加密解密地址http://tool.chacuo.net/cry ...
- AES加密解密(ECB模式)
高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准.这个标准用来替代原先的DES, ...
- 理解AES加密解密的使用方法
很多人对于AES加密并不是很了解,导致互相之间进行加密解密困难. 本文用简单的方式来介绍AES在使用上需要的知识,而不涉及内部算法.最后给出例子来帮助理解AES加密解密的使用方法. AES的麻烦 相比 ...
- C语言实现AES加密解密
AES加密是美国联邦政府采用的一种块加密标准,如今已经被全世界广为使用.嵌入式开发中我们也经常会用到加密解密算法,如果没有硬件模块来实现,就需要用到C代码软件实现.下面介绍调用mbedTLS中的AES ...
- AES加密解密算法的C代码实现
AES 加密解密的原理我就不说了, 弟兄们自己上百度去查, 文章很多. 我这里只列出从网上获取的代码的实现, 我修改了一些, 可以很方便的使用到你的代码里面. AES 比DES算法的强度更强.A ...
- AES加密解密(含python解析工具)
url:https://web.ewt360.com/register/#/login 升学登录密码加密 aes简介: 密钥K:用来加密明文的密码,在对称加密算法中,加密与解密的密钥是相同的.密钥为接 ...
- C#常用加密解密方法(AES加密解密)
在日常开发过程中,总会遇到需要加密解密的需求,这里我整理了C#常用的加密解密方法分享给大家. 先看看加密的基本概念: "加密",是一种限制对网络上传输数据的访问权的技术.原始数据( ...
- AES加密解密(java、web、app)
AES加密解密(java.web.app) AES加密解密(java.web.app) java端 Web端 ios端 AES加密解密(java.web.app) java端 package com. ...
- AES加密解密(CBC模式)
高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准.这个标准用来替代原先的DES, ...
最新文章
- win10下gnuplot的安装和使用
- 隔空操控iPhone!苹果新获悬停手势专利
- RedisTemplate
- C4C和CRM里获取当前登录用户分配的Organization Unit信息
- iOS 多参数 ...NS_REQUIRES_NIL_TERMINATION 的写法
- 紧急不代表重要:管理时间的六个秘密
- debian下ror新建项目报错解决
- Numpy之Broadcasting
- 从数据库读取数据后输出XML
- perl判断变量是数值_Perl学习12之defined undef使用
- LINUX SHELL使用while循环数组
- 妙趣横生的算法(C语言实现 第2版)pdf
- VMware14安装步骤
- 一阶电路误差分析_自动控制原理 | 时域分析法
- 《Erlang程序设计》第十六章 OTP概述
- PTC Creo 5.0.2.0 + HelpCenter Win64 中文破解版
- [USACO18JAN] Lifeguards S
- int x=3,y=2;则表达式x+=x*=y+8的值为(60)
- 实战技法 - 短线操盘 (2)
- 海康威视的视频如何显示在web页面上显示