转载自:https://www.cnblogs.com/second-tomorrow/p/9129043.html

本文将通过漫画的形式来通俗易懂的讲述什么是MD5加密算法(Message Digest Algorithm MD5(中文名为消息摘要算法第五版)),MD5加密算法的底层原理以及MD5加密算法的破解算法方法。

摘要哈希生成的正确姿势是什么样呢?分三步:

1.收集相关业务参数,在这里是金额和目标账户。当然,实际应用中的参数肯定比这多得多,这里只是做了简化。

2.按照规则,把参数名和参数值拼接成一个字符串,同时把给定的密钥也拼接起来。之所以需要密钥,是因为攻击者也可能获知拼接规则。

3.利用 MD5 算法,从原文生成哈希值。MD5 生成的哈希值是 128 位的二进制数,也就是 32 位的十六进制数。

第三方支付平台如何验证请求的签名?同样分三步:

1.发送方和请求方约定相同的字符串拼接规则,约定相同的密钥。

2.第三方平台接到支付请求,按规则拼接业务参数和密钥,利用 MD5 算法生成 Sign。

3.用第三方平台自己生成的 Sign 和请求发送过来的 Sign 做对比,如果两个 Sign 值一模一样,则签名无误,如果两个 Sign 值不同,则信息做了篡改。这个过程叫做验签。

[image]

[image]

[image]

MD5 算法底层原理:

[image]

简单概括起来,MD5 算法的过程分为四步:处理原文,设置初始值,循环加工,拼接结果。

  • 第一步:处理原文

首先,我们计算出原文长度(bit)对 512 求余的结果,如果不等于 448,就需要填充原文使得原文对 512 求余的结果等于 448。填充的方法是第一位填充 1,其余位填充 0。填充完后,信息的长度就是 512*N+448。

之后,用剩余的位置(512-448=64 位)记录原文的真正长度,把长度的二进制值补在最后。这样处理后的信息长度就是 512*(N+1)。

  • 第二步:设置初始值

MD5 的哈希结果长度为 128 位,按每 32 位分成一组共 4 组。这 4 组结果是由 4 个初始值 A、B、C、D 经过不断演变得到。MD5 的官方实现中,A、B、C、D 的初始值如下(16 进制):

TOMORROW 星辰 , 版权所有丨如未注明 , 均为原创丨本网站采用 BY-NC-SA 协议进行授权

md5加密原理简单解释相关推荐

  1. md5加密 原理 js 前后端使用

    密码进行md5加密 原理分析:加密就是存进数据库的时候变成MD5存进去,解密,就是对比的时候,将用户输入的密码转换成MD5和数据库里面的对比.; 1.我们先来看hash算法:我们可以通过 crypto ...

  2. MD5加密原理解析及OC版原理实现

    MD5加密原理解析及OC版原理实现 一.MD5算法基础概念 MD5算法是Hash算法的一种,叫做讯息摘要演算法.所谓摘要,从字面意思理解,是指内容的大概.在MD5算法中,这个摘要是指将任意数据映射成一 ...

  3. Linux MD5加密的简单使用

    文章目录 一. 什么是MD5 二. Linux下的简单实现 三. 测试 最近看到PPP拨号在验证时,有两种验证方式,一种是口令验证协商(PAP),另一种是挑战-握手验证协议(CHAP),因为最近在做的 ...

  4. 【JavaScript MD5加密】——简单的MD5加密脚本

    /*md5加密转换脚本 */var hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */ var b64pad = &q ...

  5. Md5加密原理及其实现算法

    MD5加密算法: MD5加密算法全称是Message Digest algorithm 5,它是一种不可逆的加密算法,即使知道源码也不能破译秘钥,主要用来验证密码,使用时,首先将密码采用Md5加密,M ...

  6. md5加密原理!!!【转】

    MD5简介 MD5的全称是Message-Digest Algorithm 5,在90年代初由MIT的计算机科学实验室和RSA Data Security Inc发明,经MD2.MD3和MD4发展而来 ...

  7. md5加密原理 MD5简介

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! MD5简 ...

  8. MD5加密——原理介绍

    概述 MD5消息摘要算法,属Hash算法一类.MD5算法对输入任意长度的消息进行运行,产生一个128位的消息摘要(32位的数字字母混合码). MD(Message Digest):消息摘要 特点 一个 ...

  9. md5加密 java原理_md5 32位 加密原理 Java实现md5加密

    md5 32位 加密原理 简单概括起来,MD5 算法的过程分为四步:处理原文,设置初始值,循环加工,拼接结果. 第一步:处理原文 首先,我们计算出原文长度(bit)对 512 求余的结果,如果不等于 ...

最新文章

  1. Linux下如何查看文档的内容
  2. 如何使用和自定义Win11快速设置菜单
  3. Maven 中央仓库及阿里云仓库地址
  4. C++中函数作为参数传递给其他函数
  5. 3D移动translate3d(CSS3)
  6. 什么样的 python 可以可谓专业 PyPI 项目?刚刚学到三个概念:pep8、Sphinx、pytest与GitHub Action的集成
  7. linux卸载apk命令,apk的安装和卸载 - Jenly的个人空间 - OSCHINA - 中文开源技术交流社区...
  8. Openlayer:学习笔记之简单的ol.View应用
  9. Uber开源深度学习工具Ludwig学习实践
  10. SQL常用语句(普通查询+条件查询)
  11. 离散数学_命题逻辑_部分习题
  12. 五种最火供应链金融模式分析(附详细案例)
  13. 一句话解释新西兰技术移民
  14. 七牛云 转码_七牛云视频在线转码 - 持久化处理
  15. 三相全桥整流电路_三相桥式全控整流电路的工作原理
  16. 【转】固态硬盘恢复之30分钟大法操作技巧
  17. Selenium学习 - 简介
  18. Y400电脑键帽扣下来和安装上去
  19. NuSences 数据集解析以及 nuScenes devkit 的使用
  20. JavaScript之DOM学习笔记

热门文章

  1. 崛起的第三方 从航空母舰走向集群舰队
  2. java接收流文件并返回数据
  3. 高通人工智能前瞻性布局 发力终端人工智能
  4. C++ Windows下Glog日志库安装使用教程
  5. “华为杯”研究生数学建模竞赛2020年-【华为杯】B题:汽油辛烷值优化建模(附优秀论文)
  6. [css] float 浮动不上去?
  7. 大奖赛现场统计:某大奖赛有n个选手参赛,m个评委为依次参赛的选手评判打分
  8. 命令模式--把需求记录在案,让事务灵活可变(行为模式02)
  9. python气象数据处理——计算台风方位角平均物理量
  10. puppet语法和命令详解