C# AES加密算法
来源:互联网 发布:3g网络和4g网络的速度 编辑:程序博客网 时间:2024/05/22 08:00
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class AESEncryption
{
private static byte[] _key1 = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF, 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
/// <summary>
/// AES加密算法
/// </summary>
/// <param name="plainText">明文字符串</param>
/// <param name="strKey">密钥</param>
/// <returns>返回加密后的密文字节数组</returns>
public static byte[] AESEncrypt(string plainText, string strKey)
{ //分组加密算法
SymmetricAlgorithm des = Rijndael.Create();
byte[] inputByteArray = Encoding.UTF8.GetBytes(plainText);//得到需要加密的字节数组
//设置密钥及密钥向量
des.Key = Encoding.UTF8.GetBytes(strKey);
des.IV = _key1;
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
byte[] cipherBytes = ms.ToArray();//得到加密后的字节数组
cs.Close();
ms.Close();
return cipherBytes;
}
/// <summary>
/// AES解密
/// </summary>
/// <param name="cipherText">密文字节数组</param>
/// <param name="strKey">密钥</param>
/// <returns>返回解密后的字符串</returns>
public static byte[] AESDecrypt(byte[] cipherText, string strKey)
{
SymmetricAlgorithm des = Rijndael.Create();
des.Key = Encoding.UTF8.GetBytes(strKey);
des.IV = _key1;
byte[] decryptBytes = new byte[cipherText.Length];
MemoryStream ms = new MemoryStream(cipherText);
CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Read);
cs.Read(decryptBytes, 0, decryptBytes.Length);
cs.Close();
ms.Close();
return decryptBytes;
}
}
}
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string text = "AES加密算法测试数据"; //明文
string keys = "dongbinhusasxiny";//密钥,128位
byte[] encryptBytes = AESEncryption.AESEncrypt(text, keys);
//将加密后的密文转换为Base64编码,以便显示,可以查看下结果
Console.WriteLine("明文:" + text);
Console.WriteLine("密文:" + Convert.ToBase64String(encryptBytes));
//解密
byte[] decryptBytes = AESEncryption.AESDecrypt(encryptBytes, keys);
//将解密后的结果转换为字符串,也可以将该步骤封装在解密算法中
string result = Encoding.UTF8.GetString(decryptBytes);
Console.WriteLine("解密结果:" + result);
Console.Read();
}
}
}
- C# AES加密算法
- 用C#实现AES加密算法
- 用C#实现AES加密算法
- 用C#实现AES加密算法
- C# 实现的 AES 加密算法
- 用C#实现AES加密算法
- [转帖]C#使用AES加密算法源代码
- AES加密算法
- AES加密算法
- AES加密算法
- AES加密算法
- AES加密算法
- AES 加密算法
- aes加密算法
- AES加密算法
- AES加密算法
- AES加密算法
- aes加密算法
- linux Ubuntu16.04 oprofile1.1.0 编译笔记
- Java 集合Collection与List的详解
- 稳压二极管介绍和经典应用
- 疯狂JAVA讲义——第二章练习题
- 如何理解Python 中的 if __name__ == '__main__'
- C# AES加密算法
- There is no tracking information for the current branch.
- iOS开发 Block声明方式
- Java GC理解
- 详解Android中的SQLite数据库存储
- Java 线程之Thread,Runnable,Callable<T>
- Dubbo系列(十三)Dubbo之将Dubbo服务打包成Jar包
- 《集体智慧编程》第12章 算法总结 个人笔记
- matplotlib中如何改变figure的布局和大小