手机
当前位置:查字典教程网 >编程开发 >C#教程 >C#实现对AES加密和解密的方法
C#实现对AES加密和解密的方法
摘要:AES简介AES(TheAdvancedEncryptionStandard)是美国国家标准与技术研究所用于加密电子数据的规范。它被预期能成...

AES简介

AES(The Advanced Encryption Standard)是美国国家标准与技术研究所用于加密电子数据的规范。它被预期能成为人们公认的加密包括金融、电信和政府数字信息的方法。

AES 是一个新的可以用于保护电子数据的加密算法。明确地说,AES 是一个迭代的、对称密钥分组的密码,它可以使用128、192 和 256 位密钥,并且用 128 位(16字节)分组加密和解密数据。与公共密钥密码使用密钥对不同,对称密钥密码使用相同的密钥加密和解密数据。通过分组密码返回的加密数据 的位数与输入数据相同。以下是我经过整理的代码,希望对大家有所帮助:

复制代码 代码如下:

/// <summary>

/// ASE加解密

/// </summary>

public class AESHelper

{

/// <summary>

/// 获取密钥

/// </summary>

private static string Key

{

get

{

return "abcdef1234567890"; ////必须是16位

}

}

//默认密钥向量

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>

/// <returns>将加密后的密文转换为Base64编码,以便显示</returns>

public static string AESEncrypt(string plainText)

{

//分组加密算法

SymmetricAlgorithm des = Rijndael.Create();

byte[] inputByteArray = Encoding.UTF8.GetBytes(plainText);//得到需要加密的字节数组

//设置密钥及密钥向量

des.Key = Encoding.UTF8.GetBytes(Key);

des.IV = _key1;

byte[] cipherBytes = null;

using (MemoryStream ms = new MemoryStream())

{

using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write))

{

cs.Write(inputByteArray, 0, inputByteArray.Length);

cs.FlushFinalBlock();

cipherBytes = ms.ToArray();//得到加密后的字节数组

cs.Close();

ms.Close();

}

}

return Convert.ToBase64String(cipherBytes);

}

/// <summary>

/// AES解密

/// </summary>

/// <param name="cipherText">密文字符串</param>

/// <returns>返回解密后的明文字符串</returns>

public static string AESDecrypt(string showText)

{

byte[] cipherText = Convert.FromBase64String(showText);

SymmetricAlgorithm des = Rijndael.Create();

des.Key = Encoding.UTF8.GetBytes(Key);

des.IV = _key1;

byte[] decryptBytes = new byte[cipherText.Length];

using (MemoryStream ms = new MemoryStream(cipherText))

{

using (CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Read))

{

cs.Read(decryptBytes, 0, decryptBytes.Length);

cs.Close();

ms.Close();

}

}

return Encoding.UTF8.GetString(decryptBytes).Replace("", ""); ///将字符串后尾的''去掉

}

}

Key的值可以放在config文件中,也可放入数据库中。

【C#实现对AES加密和解密的方法】相关文章:

获取wince mac地址与IP地址解决方案

C# 语音功能的实现方法

c#在控制台输出彩色文字的方法

使用SmtpClient发送邮件的方法

C#实现图片分割方法与代码

判断图片-判断位图是否是黑白图片的方法

使用C# Winform应用程序获取网页源文件的解决方法

C# 获取打印机当前状态的方法

C# 获取属性名的方法

c#启动EXE文件的方法实例

精品推荐
分类导航