欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > C# >内容正文

C#

c#AES加密解密

发布时间:2025/4/5 C# 47 豆豆
生活随笔 收集整理的这篇文章主要介绍了 c#AES加密解密 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

AES是一个对称密码,旨在取代DES成为广泛使用的标准。密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。

AES加密数据块分组长度必须为128比特,密钥长度可以是128比特、192比特、256比特中的任意一个(如果数据块及密钥长度不足时,会补齐)。AES加密有很多轮的重复和变换。大致步骤如下:1、密钥扩展(KeyExpansion),2、初始轮(Initial Round),3、重复轮(Rounds),每一轮又包括:SubBytes、ShiftRows、MixColumns、AddRoundKey,4、最终轮(Final Round),最终轮没有MixColumns。

注:经过个人测试,同一个字符串在不同设备,地域解密,加密是不一样的,必须加密和解密的秘钥要是一样的,才能解密成功;

下面我们就来学习一下C#里如何利用AES加密解密

其实AES加解密的代码大都一致,可以从网上复制过来直接调用的

1.创建一个web窗体Form1.cs来测试

如:

后台代码:

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Security.Cryptography;//记得要引入该类库 using System.Text; using System.Threading.Tasks; using System.Windows.Forms;namespace AES加密解密 {public partial class Form1 : Form{public Form1(){InitializeComponent();}/// <summary> /// AES加密 /// </summary> /// <param name="encryptStr">明文</param> /// <param name="key">密钥</param> /// <returns></returns> public static string Encrypt(string encryptStr, string key){byte[] keyArray = UTF8Encoding.UTF8.GetBytes(key);byte[] toEncryptArray = UTF8Encoding.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, 0, toEncryptArray.Length);return Convert.ToBase64String(resultArray, 0, resultArray.Length);}//ToBase64String的秘钥为32位/// <summary> /// AES解密 /// </summary> /// <param name="decryptStr">密文</param> /// <param name="key">密钥</param> /// <returns></returns> internal static string Decrypt(string decryptStr, string key){byte[] keyArray = UTF8Encoding.UTF8.GetBytes(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, 0, toEncryptArray.Length);return UTF8Encoding.UTF8.GetString(resultArray);}private void button1_Click(object sender, EventArgs e){//加密richTextBox1.Text =Encrypt(textBox1.Text,"12345678901234567890123456789012");//AES256加密要32位键值}//秘钥位数不对也不能加解密成功private void button2_Click(object sender, EventArgs e){//解密richTextBox2.Text = Decrypt(richTextBox1.Text, "12345678901234567890123456789012");//(密文,秘钥) }private void Form1_Load(object sender, EventArgs e){}} }

 

2.运行结果

3.当你把解密后的字符串拿到网上在线解密时,诶呀,不一样

加密在一定程度上保证了你数据的安全

加密有对称加密和不对称加密,对称加密一般有两个秘钥,一个为公钥就是大家都知道的,一个为私钥只有自己知道。

 

转载于:https://www.cnblogs.com/kalezhangtao/p/9085308.html

总结

以上是生活随笔为你收集整理的c#AES加密解密的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。