博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
.Net Core AES加密解密
阅读量:5024 次
发布时间:2019-06-12

本文共 2585 字,大约阅读时间需要 8 分钟。

一、AES说明

高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。它要求区块大小必须为128位,而密钥长度则可以为128、196、256位

注:AES中秘钥的长度不正确(不为128位等),则抛出异常。

在.NET Core中对于对称加密统一接口不再利用不同类而实现,对于非对称加密当然和对称加密接口就不同了,创建起来格外方便,不再是实例化对应的类,

//对称加密            var aes = Aes.Create();            var tripleDES = TripleDES.Create();            //非对称加密            var rsa = RSA.Create();

 

二、加密代码整理

#region AES加密解密 /// /// 128位处理key /// /// 原字节/// 处理key/// 
private static byte[] GetAesKey(byte[] keyArray, string key){ byte[] newArray = new byte[16]; if (keyArray.Length < 16) { for (int i = 0; i < newArray.Length; i++) { if (i >= keyArray.Length) { newArray[i] = 0; } else { newArray[i] = keyArray[i]; } } } return newArray;}/// /// 使用AES加密字符串,按128位处理key/// /// 加密内容/// 秘钥,需要128位、256位.....///
Base64字符串结果
public static string AesEncrypt(string content, string key, bool autoHandle = true){ byte[] keyArray = Encoding.UTF8.GetBytes(key); if (autoHandle) { keyArray = GetAesKey(keyArray, key); } byte[] toEncryptArray = Encoding.UTF8.GetBytes(content); SymmetricAlgorithm des = Aes.Create(); des.Key = keyArray; des.Mode = CipherMode.ECB; des.Padding = PaddingMode.PKCS7; ICryptoTransform cTransform = des.CreateEncryptor(); byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length); return Convert.ToBase64String(resultArray);}/// /// 使用AES解密字符串,按128位处理key/// /// 内容/// 秘钥,需要128位、256位.....///
UTF8解密结果
public static string AesDecrypt(string content, string key, bool autoHandle = true){ byte[] keyArray = Encoding.UTF8.GetBytes(key); if (autoHandle) { keyArray = GetAesKey(keyArray, key); } byte[] toEncryptArray = Convert.FromBase64String(content); SymmetricAlgorithm des = Aes.Create(); des.Key = keyArray; des.Mode = CipherMode.ECB; des.Padding = PaddingMode.PKCS7; ICryptoTransform cTransform = des.CreateDecryptor(); byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length); return Encoding.UTF8.GetString(resultArray);}#endregion
View Code

使用示例:

string key = "123";string result1 = SecurityHelper.AesEncrypt("张三丰", key);Console.WriteLine(result1); //o7TgaEbkrWOzUMOPdnrh8Q==string result2 = SecurityHelper.AesDecrypt(result1, key);Console.WriteLine(result2); //张三丰

 

更多:

转载于:https://www.cnblogs.com/tianma3798/p/8807816.html

你可能感兴趣的文章
java之hibernate之基于外键的双向一对一关联映射
查看>>
rxjs一句话描述一个操作符(1)
查看>>
第一次独立上手多线程高并发的项目的心路历程
查看>>
ServiceStack 介绍
查看>>
Centos7下载和安装教程
查看>>
无谓的通宵加班之后的思索
查看>>
S1的小成果:MyKTV系统
查看>>
从setting文件导包
查看>>
编写一个函数isMerge,判断一个字符串str是否可以由其他两个字符串part1和part2“组合”而成...
查看>>
union和union all
查看>>
Github 开源:使用控制器操作 WinForm/WPF 控件( Sheng.Winform.Controls.Controller)
查看>>
PMD使用提醒
查看>>
Codeforces 887D Ratings and Reality Shows
查看>>
论文《A Generative Entity-Mention Model for Linking Entities with Knowledge Base》
查看>>
CentOS 6.7编译安装PHP 5.6
查看>>
Linux记录-salt分析
查看>>
Android Studio默认快捷键
查看>>
发布开源库到JCenter所遇到的一些问题记录
查看>>
第七周作业
查看>>
函数式编程与参数
查看>>