博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# DES加解密
阅读量:5763 次
发布时间:2019-06-18

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

加密方式:将 明文 +  六位随机码 进行加密

string safeCode = RandSafeCode.RandCode(6, true);string temp = pwd + safeCode;string ciphertext = MD5.GetMD5Upper(temp);
View Code

 

生成随机码:

public class RandSafeCode    {        ///         /// 生成随机字母与数字        ///         /// 生成长度        /// 是否要在生成前将当前线程阻止以避免重复        /// 
public static string RandCode(int Length, bool Sleep) { if (Sleep) System.Threading.Thread.Sleep(3); char[] Pattern = new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' }; string result = ""; int n = Pattern.Length; System.Random random = new Random(~unchecked((int)DateTime.Now.Ticks)); for (int i = 0; i < Length; i++) { int rnd = random.Next(0, n); result += Pattern[rnd]; } return result; } }
View Code

 

加解密:

public class MD5    {        public static string GetMD5Upper(string value)        {            byte[] b = Encoding.Default.GetBytes(value);            b = new MD5CryptoServiceProvider().ComputeHash(b);            string ret = "";            for (int i = 0; i < b.Length; i++)            {                ret += b[i].ToString("X").PadLeft(2, '0');            }            return DesEncrypt(ret);        }         public const string DEFAULT_ENCRYPT_KEY = "1234567890123";        //         /// 使用默认加密        ///         ///         /// 
public static string DesEncrypt(string text) { if (string.IsNullOrEmpty(text)) return ""; try { return DesEncrypt(text, DEFAULT_ENCRYPT_KEY); } catch { return ""; } } public static string DesEncrypt(string strText, string strEncrKey) { byte[] byKey = null; byte[] IV = { 0x22, 0x37, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF }; byKey = Encoding.UTF8.GetBytes(strEncrKey.Substring(0, 8)); DESCryptoServiceProvider des = new DESCryptoServiceProvider(); byte[] inputByteArray = Encoding.UTF8.GetBytes(strText); MemoryStream ms = new MemoryStream(); CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(byKey, IV), CryptoStreamMode.Write); cs.Write(inputByteArray, 0, inputByteArray.Length); cs.FlushFinalBlock(); return Convert.ToBase64String(ms.ToArray()); } /// /// 使用默认解密 /// /// ///
public static string DesDecrypt(string cleartext) { if (string.IsNullOrEmpty(cleartext)) return ""; try { return DesDecrypt(cleartext, DEFAULT_ENCRYPT_KEY); } catch { return ""; } } public static string DesDecrypt(string text, string decrKey) { byte[] byKey = null; byte[] IV = { 0x22, 0x37, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF }; byte[] inputByteArray = new Byte[text.Length]; byKey = Encoding.UTF8.GetBytes(decrKey.Substring(0, 8)); DESCryptoServiceProvider des = new DESCryptoServiceProvider(); inputByteArray = Convert.FromBase64String(text); MemoryStream ms = new MemoryStream(); CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(byKey, IV), CryptoStreamMode.Write); cs.Write(inputByteArray, 0, inputByteArray.Length); cs.FlushFinalBlock(); Encoding encoding = new UTF8Encoding(); return encoding.GetString(ms.ToArray()); } ​} ​
View Code

 

DES是对称密码,是可逆的,要解密时,需要先从数据库取出随机码,所以在保存数据时,要保存密文和随机码

还有其他的对称密码和非对称密码,转一篇文章以便学习

http://www.cnblogs.com/wuhuacong/archive/2010/09/30/1839119.html

文章出处撰写人:伍华聪   

转载于:https://www.cnblogs.com/ntotl/p/5156635.html

你可能感兴趣的文章
java基础多线程之共享数据
查看>>
Cocos2D:塔防游戏制作之旅(五)
查看>>
性能测试知多少---性能测试工具原理与架构
查看>>
2015年工作中遇到的问题:21-30
查看>>
【软考教程】操作系统知识
查看>>
Git命令总结
查看>>
仿淘宝商品详情页上拉弹出新ViewController
查看>>
Node.js进程管理之子进程
查看>>
qla2xxx 0000:04:00.0: scsi(1:0:2): Abort command issued -- 1 1b22e 2002.
查看>>
BAT解密:互联网技术发展之路(4)- 存储层技术剖析
查看>>
研究笔记:iOS中使用WebViewProxy拦截URL请求
查看>>
Android ImageView设置长度高度为wrap_content时高度根据图片比例自适应
查看>>
(九)i++和++i
查看>>
抄袭,借鉴?
查看>>
ES6的箭头函数
查看>>
Cache-Control for Civilians
查看>>
解决小程序 callback hell
查看>>
【算法题】最大连续子序和
查看>>
前端优化常用技术心得
查看>>
JS正则表达式-学习笔记
查看>>