/// <summary>/// AESRijndael/// </summary>public class AESRijndael{/// <summary>/// 检验密钥是否有效长度【16|24|32】/// </summary>/// <param name="key">密钥</param>/// <returns>bool</returns>public static bool CheckRijndaelKey(string key){if (string.IsNullOrWhiteSpace(key))return false;if (16.Equals(key.Length) || 24.Equals(key.Length) || 32.Equals(key.Length))return true;elsereturn false;}/// <summary>/// 检验向量是否有效长度【16】/// </summary>/// <param name="iv">向量</param>/// <returns>bool</returns>public static bool CheckRijndaelIV(string iv){if (string.IsNullOrWhiteSpace(iv))return false;if (16.Equals(iv.Length))return true;elsereturn false;}/// <summary>/// Rijndael加密/// </summary>/// <param name="data">被加密的明文</param>/// <param name="dataEncoding">要加密字符串加载时编码方式</param>  /// <param name="key">密钥</param>/// <param name="vector">向量</param> /// <param name="cipherMode">对称算法的运算模式</param>  /// <param name="paddingMode">对称算法中使用的填充模式</param>  /// <returns>返回Base64String密文</returns>public static string RijndaelEncrypt(string data, Encoding dataEncoding, string key, string vector, CipherMode cipherMode = CipherMode.CBC, PaddingMode paddingMode = PaddingMode.PKCS7){return RijndaelEncrypt(dataEncoding.GetBytes(data), key, vector, cipherMode, paddingMode);}/// <summary>/// Rijndael加密/// </summary>/// <param name="dataBytes">被加密的明文</param>/// <param name="key">密钥</param>/// <param name="vector">向量</param> /// <param name="cipherMode">对称算法的运算模式</param>  /// <param name="paddingMode">对称算法中使用的填充模式</param>  /// <returns>返回Base64String密文</returns>public static string RijndaelEncrypt(byte[] dataBytes, string key, string vector, CipherMode cipherMode = CipherMode.CBC, PaddingMode paddingMode = PaddingMode.PKCS7){byte[] cryptoBytes = null;try{using (RijndaelManaged aes = new RijndaelManaged()){aes.Key = Encoding.UTF8.GetBytes(key);aes.IV = Encoding.UTF8.GetBytes(vector);aes.Mode = cipherMode;aes.Padding = paddingMode;using (MemoryStream ms = new MemoryStream()){using (CryptoStream cs = new CryptoStream(ms, aes.CreateEncryptor(), CryptoStreamMode.Write)){cs.Write(dataBytes, 0, dataBytes.Length);cs.FlushFinalBlock();cryptoBytes = ms.ToArray();}}}}catch{cryptoBytes = null;}return Convert.ToBase64String(cryptoBytes);}/// <summary>/// Rijndael解密/// </summary>/// <param name="data">被解密的密文</param>/// <param name="dataEncoding">解密字符串返回的编码方式</param>  /// <param name="key">密钥</param>/// <param name="vector">向量</param> /// <param name="cipherMode">对称算法的运算模式</param>  /// <returns>返回指定编码明文</returns>public static string RijndaelDecrypt(string data, Encoding dataEncoding, string key, string vector, CipherMode cipherMode = CipherMode.CBC, PaddingMode paddingMode = PaddingMode.PKCS7){return dataEncoding.GetString(RijndaelDecrypt(data, key, vector, cipherMode, paddingMode));}/// <summary>/// Rijndael解密/// </summary>/// <param name="data">被解密的密文</param>/// <param name="key">密钥</param>/// <param name="vector">向量</param> /// <param name="cipherMode">对称算法的运算模式</param>  /// <param name="paddingMode">对称算法中使用的填充模式</param> /// <returns>返回指定编码明文</returns>public static byte[] RijndaelDecrypt(string data, string key, string vector, CipherMode cipherMode = CipherMode.CBC, PaddingMode paddingMode = PaddingMode.PKCS7){byte[] dataBytes = Convert.FromBase64String(data);byte[] cryptoBytes = null;try{using (RijndaelManaged aes = new RijndaelManaged()){aes.Key = Encoding.UTF8.GetBytes(key);aes.IV = Encoding.UTF8.GetBytes(vector);aes.Mode = cipherMode;aes.Padding = paddingMode;using (MemoryStream ms = new MemoryStream(dataBytes)){using (CryptoStream cs = new CryptoStream(ms, aes.CreateDecryptor(), CryptoStreamMode.Read)){using (MemoryStream originalMemory = new MemoryStream()){byte[] bufferBytes = new byte[1024];int bytesRead = 0;while ((bytesRead = cs.Read(bufferBytes, 0, bufferBytes.Length)) > 0){originalMemory.Write(bufferBytes, 0, bytesRead);}cryptoBytes = originalMemory.ToArray();}}}}}catch (Exception ex){cryptoBytes = null;}return cryptoBytes;}}

转载于:https://www.cnblogs.com/tlmbem/p/10800751.html

AESRijndael加密相关推荐

  1. [转]信息安全相关理论题(二)

    27.在工程实施之前,验收方可以不给施工方弱电布线图纸,但施工结束后必须有图纸 A. 对 B. 错 您的答案: 标准答案: B 28.在OSI七层协议中,提供一种建立连接并有序传输数据的方法的层是 A ...

  2. RSA签名算法,计算调用加密报文,安全传输

    RSA签名算法 1. 获取当前的时间戳参数 2. 计算参数签名 3. 获取请求对象的MD5密文 4. 通过私钥计算某个参数的RSA签名 5. 转换字符集到utf8 6. MD5加密字符串 7. bas ...

  3. 2022-2028年中国加密货币行业市场研究及前瞻分析报告

    [报告类型]产业研究 [报告价格]4500起 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了中国加密货币行业市场行业相关概述.中国加密货 ...

  4. 2022-2028年中国加密货币交易所市场研究及前瞻分析报告

    [报告类型]产业研究 [报告价格]4500起 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了中国加密货币交易所行业市场行业相关概述.中国 ...

  5. 加解密基础——(对称加密、非对称加密和混合加密)

    本文对之前学习过的加解密相关知识做一简单总结,以备后用. 1. 基本概念 加密算法 通常是复杂的数学公式,这些公式确定如何将明文转化为密文的过程和规则. 密钥 是一串被加入到算法中的随机比特. 待续 ...

  6. 如何写出安全的API接口(参数加密+超时处理+私钥验证+Https)

    上篇文章说到接口安全的设计思路,如果没有看到上篇博客,建议看完再来看这个. 通过园友们的讨论,以及我自己查了些资料,然后对接口安全做一个相对完善的总结,承诺给大家写个demo,今天一并放出. 对于安全 ...

  7. aes前台加密后台解密

    aes加密npm地址:https://www.npmjs.com/package/crypto-js aes加密git地址/下载: https://github.com/brix/crypto-js ...

  8. 牛腩44 整合登陆页 RequiredFieldValidator 和 ValidationSummary 以及 asp.net 自带的MD5 加密...

    在我们后台登陆的时候,有 用户名,密码和验证码3个必选项,所以我们托3个验证控件过来 例如这里,如果没有填写用户名,当点提交的时候,显示 红色的  * 号,并且弹出一个 alert 效果如下     ...

  9. Sql存储过程加密和解密

    可用于加密SQL存储过程或者触发器(这是SQL Server本身提供的,也就是说这是微软的加密算法) http://www.mscto.com 使用 WITH ENCRYPTION 选项 WITH E ...

最新文章

  1. BZOJ 4059: [Cerc2012]Non-boring sequences ( )
  2. 写CSDN插入图片一直无法显示?
  3. 基于哈希算法的web账户口令存储方法
  4. intellij2018使用2019的主题
  5. ABAP和Java单例模式的攻防
  6. In the beginning, many people on Wall Street did
  7. Python2.x vs Python3
  8. 2015年总结与2016年目标
  9. Python标准库映射类型与可散列数据类型的关系
  10. 限制用户不能删除SharePoint列表中的条目(项目)
  11. linux部署rabbit mq,Linux安装rabbitmq遇到的问题
  12. 利用VBA将表格保存为PDF文件
  13. 电脑出现问题,你的PIN不可用。请单击以重新设置。
  14. 来个水帖:下载Dev
  15. 在html中打字如何变大,怎么把网页的字变大?教你网页操作实用技巧【步骤详解】...
  16. CF1442D Sum 分治 背包dp
  17. TCP状态转换图文解说
  18. 什么软件有html5游戏,多款好玩HTML5小游戏带你认识HTML5优势
  19. vue3 项目搭建以及使用
  20. 怎么还原计算机网络,怎么把网络协议还原为默认设置

热门文章

  1. (四)在MLOps管道中进行持续训练
  2. ONNX系列五 --- 在C#中使用可移植的ONNX AI模型
  3. .NET Core/标准自动增量版本控制
  4. python学生管理系统(函数方法)_(python函数)学生管理系统
  5. oracle 时间按季度,ORACLE时间字段取年、月、日、季度
  6. 通过nginx反向代理解决跨域
  7. .net mvc html使用方法,C# ASP.NET MVC HtmlHelper用法汇总
  8. 计算机科学与技术做什么实验,计算机科学与技术专业实验教学大纲
  9. go mysql id为0_go 语言中mysql操作200万数据时应该如何写?
  10. python脚本运行命令_从Python脚本运行shell命令