签名算法-MD5

一、什么是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 加密
谈谈密码安全:服务端密码保存

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 161,192评论 4 369
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,186评论 1 303
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 110,844评论 0 252
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,471评论 0 217
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,876评论 3 294
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,891评论 1 224
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,068评论 2 317
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,791评论 0 205
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,539评论 1 249
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,772评论 2 253
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,250评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,577评论 3 260
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,244评论 3 241
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,146评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,949评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,995评论 2 285
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,812评论 2 276

推荐阅读更多精彩内容

  • 这篇文章主要讲述在Mobile BI(移动商务智能)开发过程中,在网络通信、数据存储、登录验证这几个方面涉及的加密...
    雨_树阅读 2,238评论 0 6
  • 在很多时候在跟第三方做数据交互的时候,对方都会提供给我们签名密钥signKey,并且要求我们传入签名 这种做法非常...
    smallThree1阅读 2,505评论 0 0
  • 前言 《图解密码技术》一书介绍了很多关于密码的知识,通读一遍需要不少时间。为了方便学习,我对书中关键的部分进行了总...
    咖枯阅读 7,018评论 1 25
  • 为了防止我们的数据泄露,我们往往会对数据进行加密,特别是敏感数据,我们要求的安全性更高。下面将介绍几种常用的加密算...
    Chauncey_Chen阅读 2,856评论 0 20
  • 寂寞日子里开怀大笑 我的孤独变得喧闹 听不清夜的低吟 只当做一阵聒噪 彷徨的人仍在彷徨 街角霓虹灯又亮到太晚 盼一...
    夜半空腹阅读 298评论 1 10