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   

另一种MD5加密方法:

    MD5加密简单的说就是把一段明文 通过某种运算方式 求出密文。例如:明文为:abcdefg 通过一些列运算 得到 密文 7ac66c0f148de9519b8bd264312c4d64

    它具有两个特性:1.无碰撞,2.不可逆。

无碰撞是指:

     7ac66c0f148de9519b8bd264312c4d64 这段密文 只能由 abcdefg 这段明文得到,除此之外其他的 明文加密后 其值 绝对不会等于7ac66c0f148de9519b8bd264312c4d64,也就是说 没有那两个明文 加密后 会得到相同的密文。

不可逆是指:

    明文通过加密后得到密文,而无法通过密文 求出明文。也就是说 当我们知道明文 adcdefg 可以通过加密得到 7ac66c0f148de9519b8bd264312c4d64,但是我们如果知道 某段文字 加密后 得到7ac66c0f148de9519b8bd264312c4d64,却无法算出 7ac66c0f148de9519b8bd264312c4d64这段文字是由谁加密而来的。

     例如 用户设置的密码 为 abcdefg,而存储的时候 我们存储的是 abcdefg加密过之后得到的值 7ac66c0f148de9519b8bd264312c4d64,那么用户再次登录时 会输入密码abcdefg,我们如何比较两者是否相等?

    我们无法通过 加密后的值换算出 加密前的值,因此 我们通常的做法是,把用户再次登录时 输入的密码 再次加密 和数据库中 存放的值进行比对,如果相等 则说明输入的密码正确。

    需要引用 using System.Web.Security;

FormsAuthentication.HashPasswordForStoringInConfigFile(str, "MD5").ToLower();

  

转载于:https://www.cnblogs.com/swjian/p/6362442.html

.NET MD5加密解密代码相关推荐

  1. java 采用MD5加密解密代码示例(不玩套路, 非标题党, 附带解密代码)

    package cn.demo; import java.io.UnsupportedEncodingException; import java.security.MessageDigest; im ...

  2. md5加密解密代码_Python内置方法实现基于秘钥的信息加解密

    点击关注州的先生 精彩不容错过 在实际编程开发中,我们会使用到各类的加密算法来对数据和信息进行加密.比如密码中比较常见的MD5加密,以及AES加密等等.对于密码认证来说,MD5加密是比较适合的,因为其 ...

  3. 还愁不能解密MD5值?简单代码就能实现md5加密解密,内附源码,亲测可用

    众所周知,md5本身是不可逆的,但我们可以使用以下代码中提供的接口进行解密啊!我试了下成功率是非常的高!8位以内的纯数字的md5值都可以解密. php代码 <?php $MiWen = &quo ...

  4. php md5加密 java代码_Java实现MD5加密及解密的代码实例分享

    基础:MessageDigest类的使用 其实要在Java中完成MD5加密,MessageDigest类大部分都帮你实现好了,几行代码足矣:/** * 对字符串md5加密 * * @param str ...

  5. java中完成md5加密解密_java实现md5加密解密 notNET中加密和解密的实现方法

    java实现md5加密解密 notNET中加密和解密的实现方法 亦或是旅途风光 7-14 1918℃ 22 [ ee21.cn - ASP.NET ] .NET将原来独立的API和SDK合并到一个框架 ...

  6. Java实现MD5加密解密类

    Java实现MD5加密以及解密类,附带测试类,具体见代码. MD5加密解密类--MyMD5Util,代码如下: [java] view plaincopy package com.zyg.securi ...

  7. c语言字符串md5加密解密,.net core使用MD5加密解密字符串

    本文实例为大家分享了.net core使用MD5加密解密字符串的具体代码,供大家参考,具体内容如下 /// /// 加密 /// /// 要加密的文本 /// 秘钥 /// public static ...

  8. php结合md5的加密解密,php结合md5实现的加密解密方法,php结合md5加密解密_PHP教程...

    php结合md5实现的加密解密方法,php结合md5加密解密 本文实例讲述了php结合md5实现的加密解密方法.分享给大家供大家参考,具体如下: 最近在整理代码发现了一个不错的东西,结合md5的加解密 ...

  9. RSA、MD5加密解密算法全套解析安装教程

    第一部分介绍加密解密算法, 第二部分介绍我小组成功应用的RSA.MD5两种加密解密算法,以及心得体会. 1.加密解密算法介绍 应用的开发中安全很重要,所以信息加密技术显得尤为重要.我们需要对应用中的多 ...

最新文章

  1. 基于深度学习和迁移学习的识花实践
  2. Delphi - 我的代码之窗体移动
  3. 服务器保存excel文件慢,从使用IE的服务器缓慢地保存Excel文件
  4. 可以在中断服务程序执行malloc吗?
  5. 解决scanf_s函数报错:没有为格式字符串传递足够的参数
  6. 附录 D:保护 Active Directory 中的内置 Administrator 帐户的安全
  7. postek二次开发_POSTEK二次开发接口
  8. KM算法(最优匹配)
  9. 批量增加dns 条件转发器
  10. C语言两个数比较大小和三个数比较大小,代码
  11. 大数据第三季--flume(day2)-徐培成-专题视频课程
  12. 【STM32】红外对射计数器计数原理和代码
  13. 行列式的六条运算法则整理
  14. C语言骑士与金币问题
  15. 移动端的vm vh是什么
  16. linux rtc与时钟
  17. html进度条倒计时代码,html5+css3进度条倒计时动画特效代码【推荐】_html5教程技巧...
  18. 使用DiskMan(DiskGen)恢复被删除的分区
  19. html的高度塌陷,html高度塌陷以及定位的理解
  20. NEUQ图灵杯之A题——蔡老板的会议

热门文章

  1. Linux常用命令大全--有关磁盘空间的命令
  2. javascript对页面简单的加密和解密
  3. nginx开发简单的http模块
  4. 《剑指offer》两个链表的第一个公共节点
  5. python扫盲系列--(4)
  6. Elasticsearch教程 elasticsearch Mapping的创建
  7. Spark内存管理(1)—— 静态内存管理
  8. 机器学习实战(用Scikit-learn和TensorFlow进行机器学习)(八)
  9. ORA-01658:无法为表空间XXX中的段创建initial区
  10. 《MATLAB图像处理375例》——1.8 MATLAB程序流程控制结构