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

本文共 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

你可能感兴趣的文章
网络异常分析CFURLConnectionSendSynchronousRequest
查看>>
我所接触的云计算
查看>>
java枚举之简要
查看>>
Netstat 的几个常用方法
查看>>
linux通过ad验证登录
查看>>
使用 Parallel 提高 Linux 命令行执行效率
查看>>
kafka监控及管理
查看>>
swoole扩展安装
查看>>
Export and Import Table Data
查看>>
JVM虚拟机结构
查看>>
NFS basics
查看>>
AS(Android Studio)开发开源Android库快速教程
查看>>
webview处理404错误[转载]
查看>>
JFinal使用笔记4-页面验证和跳转
查看>>
PyQt4第一个程序
查看>>
Silverlight Gantt甘特图开发包
查看>>
【转】Unity多线程(Thread)和主线程(MainThread)交互使用类——Loom工具分享
查看>>
安装启动mongodb
查看>>
map的三种遍历方法
查看>>
【设计模式】—— 观察者模式Observer
查看>>