EncryptHelper加密对象-工具类
2023-09-27 14:23:16 时间
using System; using System.IO; using System.Security.Cryptography; using System.Text; using System.Web.Security; namespace Common.Utility { /// <summary> /// Author:Kt /// Date Created:2011-04-01 /// Description:加密对象-工具类 /// </summary> public class EncryptHelper { /// <summary> /// AES 解密 /// </summary> /// <param name="content">内容</param> /// <param name="secretKey">私钥(长度: 16、24、32字节)</param> /// <returns></returns> public static string AESDecrypt(string content, string secretKey) { if (string.IsNullOrEmpty(content)) return null; Byte[] toEncryptArray = Convert.FromBase64String(content); System.Security.Cryptography.RijndaelManaged rm = new System.Security.Cryptography.RijndaelManaged { Key = Encoding.UTF8.GetBytes(secretKey), Mode = System.Security.Cryptography.CipherMode.ECB, Padding = System.Security.Cryptography.PaddingMode.PKCS7 }; System.Security.Cryptography.ICryptoTransform cTransform = rm.CreateDecryptor(); Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length); return Encoding.UTF8.GetString(resultArray); } /// <summary> /// AES 加密 /// </summary> /// <param name="content">内容</param> /// <param name="secretKey">私钥(长度: 16、24、32字节)</param> /// <returns></returns> public static string AESEncrypt(string content, string secretKey) { byte[] keyArray = UTF8Encoding.UTF8.GetBytes(secretKey); byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(content); 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); } /// <summary> /// MD5 加密 /// </summary> /// <param name="content">内容</param> /// <returns></returns> public static string Md5(string content) { return FormsAuthentication.HashPasswordForStoringInConfigFile(content, "MD5"); } /// <summary> /// MD5 加密 /// </summary> /// <param name="content">内容</param> /// <param name="encode">编码</param> /// <returns>签名字符串</returns> public static string Md5(string content, Encoding encode) { var result = new StringBuilder(); var md5 = new MD5CryptoServiceProvider(); var bytes = md5.ComputeHash(encode.GetBytes(content)); foreach (var item in bytes) result.Append(item.ToString("x").PadLeft(2, '0')); return result.ToString(); } /// <summary> /// 3DES 解密 /// </summary> /// <param name="content">内容</param> /// <param name="secretKey">私钥</param> /// <param name="ivs">向量</param> /// <returns></returns> public static string DESDecrypt(string content, string secretKey, string ivs) { SymmetricAlgorithm mCSP = new TripleDESCryptoServiceProvider(); mCSP.Mode = CipherMode.CBC; mCSP.Padding = PaddingMode.PKCS7; mCSP.Key = Encoding.UTF8.GetBytes(secretKey); mCSP.IV = Encoding.UTF8.GetBytes(ivs); ICryptoTransform ct; MemoryStream ms; CryptoStream cs; byte[] byt; ct = mCSP.CreateDecryptor(mCSP.Key, mCSP.IV); byt = Convert.FromBase64String(content); ms = new MemoryStream(); cs = new CryptoStream(ms, ct, CryptoStreamMode.Write); cs.Write(byt, 0, byt.Length); cs.FlushFinalBlock(); cs.Close(); return Encoding.UTF8.GetString(ms.ToArray()); } /// <summary> /// 3DES 加密 /// </summary> /// <param name="content">内容</param> /// <param name="secretKey">私钥</param> /// <param name="ivs">向量</param> /// <returns></returns> public static string DESEncrypt(string content, string secretKey, string ivs) { SymmetricAlgorithm mCSP = new TripleDESCryptoServiceProvider(); mCSP.Mode = CipherMode.CBC; mCSP.Padding = PaddingMode.PKCS7; mCSP.Key = Encoding.UTF8.GetBytes(secretKey); mCSP.IV = Encoding.UTF8.GetBytes(ivs); ICryptoTransform ct; MemoryStream ms; CryptoStream cs; byte[] byt; ct = mCSP.CreateEncryptor(mCSP.Key, mCSP.IV); byt = Encoding.UTF8.GetBytes(content); ms = new MemoryStream(); cs = new CryptoStream(ms, ct, CryptoStreamMode.Write); cs.Write(byt, 0, byt.Length); cs.FlushFinalBlock(); cs.Close(); return Convert.ToBase64String(ms.ToArray()); } } }
using System; using System.Text; namespace Common.Utility.Tests { /// <summary> /// 运行示例 /// </summary> internal partial class Program { private static void Main_EncryptHelper(string[] args) { string str = "需要加密的字符串12345678"; string md5_1 = EncryptHelper.Md5(str); string md5_2 = EncryptHelper.Md5(str, Encoding.UTF8); str = "10086"; string secretKey_AES = Guid.NewGuid().ToString("N"); string JiaMi = EncryptHelper.AESEncrypt(str, secretKey_AES); string JieMi = EncryptHelper.AESDecrypt(JiaMi, secretKey_AES); string secretKey_DES = "fsT7ObM1nEnrRAGO1djI2YBi"; string ivs_DES = "GUGlYE1g"; JiaMi = EncryptHelper.DESEncrypt(str, secretKey_DES, ivs_DES); JieMi = EncryptHelper.DESDecrypt(JiaMi, secretKey_DES, ivs_DES); } } }
相关文章
- exe加密/加壳工具.Net Reactor
- DButils工具类能够用来获取数据库连接向数据库插入更新删除对象
- 生成随机密码的工具类
- jackson工具类 对象转字符串 -- 字符串转对象
- 如何构建RISC-V的交叉编译工具链?
- SNMP OID批量枚举工具
- 现代化构建工具
- QT工具——qmake
- SqlServer性能检测和优化工具使用详细
- 深入理解JVM—性能监控工具
- 浅析如何实现根据图片自动切换背景色功能:提取图片主题色方案探索 - CSS提取(filter: blur + transform: scale)、Color Thief 工具库提取、对象存储的智能多媒体服务提供图片处理功能
- Java里的IO基础知识笔记:IO流、字节流/字符流、File对象读取、输入流/输出流(使用过后及时关闭、缓冲区)、Filter模式、ZIP操作、读取classpath资源的意义、序列化/反序列化、Reader/Writer、使用Files工具类及其局限性
- Node.js:get/post请求、全局对象、工具模块
- Unity 工具类 之 简单的对象池管理类 ObjectPoolManager 实现
- Three 之 three.js (webgl)基础 3D 辅助对象 Helper 开发的工具简单介绍
- 分享几款一键搭建php本地测试环境工具
- 免费在线工具分享 | 录屏、视频转gif、gif剪切、音频剪切、音频合并、设计相关