C# 3DES 加密
来源:互联网 发布:爱普生tx800清零软件 编辑:程序博客网 时间:2024/06/07 07:50
public class DESHelper { #region 3des加密 /// <summary> /// 3des ecb模式加密 /// </summary> /// <param name="aStrString">待加密的字符串</param> /// <param name="aStrKey">密钥</param> /// <param name="iv">加密矢量:只有在CBC解密模式下才适用</param> /// <param name="mode">运算模式</param> /// <returns>加密后的字符串</returns> public static string Encrypt3Des(string aStrString, string aStrKey, CipherMode mode = CipherMode.ECB, string iv = "12345678") { try { var des = new TripleDESCryptoServiceProvider { Key = Encoding.UTF8.GetBytes(aStrKey), Mode = mode }; if (mode == CipherMode.CBC) { des.IV = Encoding.UTF8.GetBytes(iv); } var desEncrypt = des.CreateEncryptor(); byte[] buffer = Encoding.UTF8.GetBytes(aStrString); buffer = Encoding.Convert(Encoding.GetEncoding("UTF-8"), Encoding.GetEncoding("GB2312"), buffer); return Convert.ToBase64String(desEncrypt.TransformFinalBlock(buffer, 0, buffer.Length)); } catch (Exception e) { return string.Empty; } } #endregion #region 3des解密 /// <summary> /// des 解密 /// </summary> /// <param name="aStrString">加密的字符串</param> /// <param name="aStrKey">密钥</param> /// <param name="iv">解密矢量:只有在CBC解密模式下才适用</param> /// <param name="mode">运算模式</param> /// <returns>解密的字符串</returns> public static string Decrypt3Des(string aStrString, string aStrKey, CipherMode mode = CipherMode.ECB, string iv = "12345678") { try { var des = new TripleDESCryptoServiceProvider { Key = Encoding.UTF8.GetBytes(aStrKey), Mode = mode, Padding = PaddingMode.PKCS7 }; if (mode == CipherMode.CBC) { des.IV = Encoding.UTF8.GetBytes(iv); } var desDecrypt = des.CreateDecryptor(); var result = ""; byte[] buffer = Convert.FromBase64String(aStrString); result = Encoding.UTF8.GetString(desDecrypt.TransformFinalBlock(buffer, 0, buffer.Length)); return result; } catch (Exception e) { return string.Empty; } } #endregion }
测试:注意key字符长度为24
static void Main(string[] args) { //IV string IV = "20160120"; //KEY string KEY = "012345678901234567891234"; //data json string string dataJsonString = "TEST"; Console.WriteLine("加密之前:"+ dataJsonString); //3des 加密 string Encrypt3Des = DESHelper.Encrypt3Des(dataJsonString, KEY, CipherMode.CBC, IV); Console.WriteLine("加密之后:" + Encrypt3Des); //3des 解密 string Decrypt3Des = DESHelper.Decrypt3Des(Encrypt3Des, KEY, CipherMode.CBC, IV); Console.WriteLine("解密密之后:" + Decrypt3Des); Console.ReadKey(); }
阅读全文
0 0
- C# 3DES 加密
- C# DES和3DES加密类
- C#实现3DES加密
- C# 3DES加密解密
- C# 加密解密(DES,3DES,MD5,Base64) 类
- JAVA和C# 3DES加密解密
- C#的3DES加密/解密
- C# 实现3Des加密 解密 - SummerA
- JAVA和C# 3DES加密解密
- C#3DES加密默认填充方法
- JAVA和C# 3DES加密解密
- JAVA和C# 3DES加密解密
- JAVA和C# 3DES加密解密
- JAVA和C# 3DES加密解密
- JAVA和C# 3DES加密解密
- C# 3DES加密解密算法
- C#和JAVA 3DES加密解密
- JAVA和C# 3DES加密解密
- 各种MQTT server功能比較
- 分享下多年积累的对JAVA程序员成长之路的总结
- viewpager切换
- Android之十三图片的2D翻转
- js数组的常用方法
- C# 3DES 加密
- leetcode习题解答:11. Container With Most Water
- ssm框架搭建(主要配置步骤)
- 网站开发流程,个人心得,欢迎补充
- 【NOIP2017提高A组集训10.25】摘Galo (树形dp)
- Spring Boot系列02-Spring Boot + JSP 整合进行网页开发
- 初识网站安全
- flask-web开发-用户认证代码分析(四)
- 反射