美文网首页
签名算法-MD5

签名算法-MD5

作者: 赵伯舟 | 来源:发表于2019-06-07 17:10 被阅读0次

一、什么是MD5

MD5 (Message Digest Algorithm 5,消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数

MD5的功能,简单而言,是将一段明文作为输入,输出一串固定长度的字符串,即此段明文的签名(或摘要),并保证输入不同的明文,其输出的签名截然不同(有极低概率失效)。

二、MD5算法

MD5 算法流程

MD5的算法可以简述如下:

  1. 若明文长度不是512位的整数倍,则填充字符至满足此条件,然后将明文按512位的长度分块
  2. 设置128位的初始秘钥,一般使用算法库默认值,按照顺序对一块数据进行非线性运算,生成一个128位的结果,作为下一次计算的输入部分,依次迭代,直到最后输出一个128位的签名

三、代码实现

现有主流语言都有对应的MD5实现,在Python中Demo如下:

import hashlib

# 待加密信息
text = 'hello world'

# 创建md5对象
md5 = hashlib.md5()
#更新hash对象的值
md5.update(text.encode("utf-8"))

print('MD5 sign=:' + md5.hexdigest())

四、实际应用

情景1:服务器端密码存储

很久前安全意识还很淡薄,不少服务器密码是明文保存于数据库中的。一旦攻击者成功入侵到数据库,就直接取得账号和密码
随着时间发展,开发者认识到密码明文保存的脆弱性,采用加密保存密码。此阶段不存储用户的原始密码,而是存储其密码的签名。用户登录时只需要计算其输入密码的签名与服务器端保存的签名是否一致即可。这样,即使泄露了签名值,攻击者也无法直接得到原始的密码

情景2:消息防篡改

上面MD5的算法中初始由算法默认设置。如果直接使用的话,是不安全的。比如我发送一段消息,并将其MD5签名发送出去。但是被第三方拦截了,他修改了消息,重新进行MD5签名。那么接收方无法判断其是否消息是否被修改了
一般而言,是发送方和接收方一同约定一个密钥,在发送消息是将密钥加在消息中进行签名。第三方没有密钥,重新生成的签名是不同的
此外,有的时候会在消息后面加上一无意义的随机字符串,是得生成的MD5更加随机,不易被破解

参考链接

MD5算法原理介绍与C++实现
信息摘要算法之一:MD5算法解析及实现
Python 中 MD5 加密
谈谈密码安全:服务端密码保存

相关文章

  • 证书和签名机制

    证书和签名机制 数字签名:实际上是非对称加密+摘要算法(MD5或SHA1)。首先将文本通过摘要算法得到摘要,再用私...

  • node.js MD5

    MD5和SHA1 MD5是一种常用的哈希算法,用于给任意数据一个“签名”。这个签名通常用一个十六进制的字符串表示:...

  • 各种加密算法比较

    各种加密算法比较 算法选择:对称加密AES,非对称加密: ECC,消息摘要: MD5,数字签名:DSA 对称加密算...

  • 011各种加密算法比较

    算法选择:对称加密AES,非对称加密: ECC,消息摘要: MD5,数字签名:DSA 对称加密算法(加解密密钥相同...

  • Golang常见加密算法

    md5签名算法 md5加密是我们常用的一种加密算法,可以对明文进行处理产生一个128位(16字节)的散列值,为了便...

  • 签名算法MD5

    在很多时候在跟第三方做数据交互的时候,对方都会提供给我们签名密钥signKey,并且要求我们传入签名 这种做法非常...

  • 签名算法-MD5

    一、什么是MD5 MD5 (Message Digest Algorithm 5,消息摘要算法第五版)为计算机安全...

  • 第一篇、MD5算法和SHA-1算法

    目录一、MD5算法 1、MD5算法是什么? 2、MD5算法的优点 3、MD5算法的不足 4、MD5加密的应用场景 ...

  • MD5(MD5 消息摘要算法)

    MD5(MD5 消息摘要算法) MD5 简介 MD5 消息摘要算法(MD5 Message-Digest Algo...

  • 如何通过node.js对数据进行MD5加密

    md5介绍:MD5是一种常用的哈希算法,主要用于对一些重要数据进行“签名”,当然这些数据可以是任意的。最终得到的“...

网友评论

      本文标题:签名算法-MD5

      本文链接:https://www.haomeiwen.com/subject/raamxctx.html