首页 > 编程 > .NET > 正文

.NET MD5加密解密代码解析

2024-07-10 12:49:19
字体:
来源:转载
供稿:网友

MD5简介:

  是让大容量信息在用数字签名软件签署私人密匙前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的大整数)。不管是MD2、MD4还是MD5,它们都需要获得一个随机长度的信息并产生一个128位的信息摘要。虽然这些算法的结构或多或少有些相似,但MD2的设计与MD4和MD5完全不同,那是因为MD2是为8位机器做过设计优化的,而MD4和MD5却是面向32位的电脑。这三个算法的描述和C语言源代码在Internet RFCs 1321中有详细的描述,这是一份最权威的文档,由Ronald L. Rivest在1992年8月向IETF提交。

代码:

string JiaMi = Md5Encrypt(LoginPwd);    string JieMi = Md5Decrypt(JiaMi);    #region MD5加密    /// <summary>       /// MD5加密       /// </summary>       /// <param name="strSource">需要加密的字符串</param>       /// <returns>MD5加密后的字符串</returns>       public static string Md5Encrypt(string strSource)    {      //把字符串放到byte数组中         byte[] bytIn = System.Text.Encoding.Default.GetBytes(strSource);      //建立加密对象的密钥和偏移量             byte[] iv = { 102, 16, 93, 156, 78, 4, 218, 32 };//定义偏移量         byte[] key = { 55, 103, 246, 79, 36, 99, 167, 3 };//定义密钥         //实例DES加密类         DESCryptoServiceProvider mobjCryptoService = new DESCryptoServiceProvider();      mobjCryptoService.Key = iv;      mobjCryptoService.IV = key;      ICryptoTransform encrypto = mobjCryptoService.CreateEncryptor();      //实例MemoryStream流加密密文件         System.IO.MemoryStream ms = new System.IO.MemoryStream();      CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Write);      cs.Write(bytIn, 0, bytIn.Length);      cs.FlushFinalBlock();      return System.Convert.ToBase64String(ms.ToArray());    }    #endregion    #region MD5解密    /// <summary>       /// MD5解密       /// </summary>       /// <param name="Source">需要解密的字符串</param>       /// <returns>MD5解密后的字符串</returns>       public static string Md5Decrypt(string Source)    {      //将解密字符串转换成字节数组         byte[] bytIn = System.Convert.FromBase64String(Source);      //给出解密的密钥和偏移量,密钥和偏移量必须与加密时的密钥和偏移量相同         byte[] iv = { 102, 16, 93, 156, 78, 4, 218, 32 };//定义偏移量         byte[] key = { 55, 103, 246, 79, 36, 99, 167, 3 };//定义密钥         DESCryptoServiceProvider mobjCryptoService = new DESCryptoServiceProvider();      mobjCryptoService.Key = iv;      mobjCryptoService.IV = key;      //实例流进行解密         System.IO.MemoryStream ms = new System.IO.MemoryStream(bytIn, 0, bytIn.Length);      ICryptoTransform encrypto = mobjCryptoService.CreateDecryptor();      CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Read);      StreamReader strd = new StreamReader(cs, Encoding.Default);      return strd.ReadToEnd();    }    #endregion              
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表