MD5 加密算法 All In One
MD5 算法是 Hash 算法的一种,叫做讯息摘要
算法
Message-Digest Algorithm / 消息摘要算法
https://zh.wikipedia.org/wiki/MD5
https://en.wikipedia.org/wiki/MD5
MD5 算法加密原理
一、MD5 算法基础概念
MD5算法是 Hash算法
的一种,叫做讯息摘要演算法。
所谓摘要,从字面意思理解,是指内容的大概。
在 MD5算法中,这个摘要是指将任意数据映射
成一个 128位
长的摘要信息。
并且其是不可逆
的,即从摘要信息无法反向推演中原文,在演算过程中,原文的内容也是有丢失的。
因为MD5算法最终生成的是一个 128位长的数据,从原理上说,有 2^128种可能,这是一个非常巨大的数据,约等于3.4乘10的38次方,虽然这个是个天文数字,但是世界上可以进行加密的数据原则上说是无限的,因此是可能存在不同的内容经过MD5加密后得到同样的摘要信息(冲突
),但这个碰中的概率非常小。
二、MD5 算法使用场景
MD5常用在密码加密中,一般为了保证用户密码的安全,在数据库中存储的都是用户的密码经过 MD5加密后的值,在客户端用户输入密码后,也会使用 MD5进行加密,这样即使用户的网络被窃听,窃听者依然无法拿到用户的原始密码,并且即使用户数据库被盗,没有存储明文的密码对用户来说也多了一层安全保障。
MD5签名技术还常用于防止信息的篡改
。
使用MD5可以对信息进行签名,接收者拿到信息后只要重新计算签名
和原始签名
进行对比,即可知道数据信息是否中途被篡改了。
三、MD5 算法原理
MD5算法大致分为4步完成:
第1步:进行数据填充整理
这一步是对要加密的数据进行填充和整理,将要加密的二进制数据对 512取模,得到的结果如果不够 448位,则进行补足,补足的方式是第1位填充1,后面全部填充0。
第2步:记录数据长度
经过第一步整理完成后的数据的位数可以表示为 N512+448,再向其后追加64位用来存储数据的长度,比如数据的长度为16字节,则用10000来填充后64位。这一步做完后,数据的位数将变成(N+1)512。
第3步:以标准的幻数作为输入
MD5的实现需要每512个字节进行一次处理,后一次处理的输入为前一次处理的输出,因此,在循环处理开始之前,需要拿4个标准数作为输入,它们分别是:
unsigned int A=0x67452301,B=0xefcdab89,C=0x98badcfe,D=0x10325476;
第4步:进行N轮循环处理,将最后的结果输出
这一步重要的是每一轮的处理算法,每一轮处理也要循环64次,这64次循环被分为4各组,每16次循环为一组,每组循环使用不同的逻辑处理函数,处理完成后,将输出作为输入进入下一轮循环。
https://developer.aliyun.com/article/790494
非对称加密
公开密钥
密码学(英语:Public-key cryptography)也称非对称式
密码学(英语:Asymmetric cryptography)是密码学的一种演算法,它需要两个密钥,一个是公开密钥
,另一个是私有密钥
;
公钥用作加密
,私钥则用作解密
。
使用公钥把明文加密后所得的密文
,只能用相对应的私钥才能解密并得到原本的明文,最初用来加密的公钥不能用作解密。
由于加密和解密需要两个不同的密钥,故被称为非对称加密;
不同于加密和解密都使用同一个密钥的对称加密
。
公钥可以公开,可任意向外发布;
私钥不可以公开,必须由用户自行严格秘密保管,绝不透过任何途径向任何人提供,也不会透露给被信任的要通讯的另一方。
基于公开密钥加密的特性,它还能提供数位签章
的功能,使电子文件可以得到如同在纸本文件上亲笔签署的效果。
公开金钥基础建设透过信任数字证书
认证机构的根证书
、及其使用公开密钥加密作数位签章
核发的公开金钥认证,形成信任链
架构,已在 TLS
实现并在万维网的 HTTP 以 HTTPS
、在电子邮件的 SMTP 以 SMTPS
或STARTTLS
引入。
另一方面,信任网络
则采用去中心化
的概念,取代了依赖数字证书认证机构的公钥基础设施,因为每一张电子证书在信任链
中最终只由一个根证书授权信任,信任网络的公钥则可以累积多个用户的信任
常见的公钥加密算法有:RSA
、ElGamal、Rabin(RSA的特例)、DSA
、ECDSA。
使用最广泛的是RSA算法(由发明者Rivest、Shmir和Adleman姓氏首字母缩写而来)是著名的公开秘钥加密算法。
https://zh.wikipedia.org/zh-hans/公开密钥加密
对称加密
对称密钥
算法(英语:Symmetric-key algorithm)又称为对称加密
、私钥加密、共享密钥加密,是密码学中的一类加密算法。
这类算法在加密和解密时使用相同的
密钥,或是使用两个可以简单地相互推算
的密钥。
事实上,这组密钥成为在两个或多个成员间的共同秘密,以便维持专属的通讯联系。
与公开密钥加密相比,要求双方取得相同的密钥
是对称密钥加密的主要缺点之一。
常见的对称加密算法有 AES
、ChaCha20、3DES、Salsa20、DES
、Blowfish、IDEA、RC5、RC6、Camellia。
对称加密的速度比公钥加密快
很多,在很多场合都需要对称加密。
https://zh.wikipedia.org/zh-hans/對稱密鑰加密
https://zh.wikipedia.org/zh-cn/對稱密鑰加密
refs
https://www.cnblogs.com/xgqfrms/p/5014807.html
©xgqfrms 2012-2020
www.cnblogs.com/xgqfrms 发布文章使用:只允许注册用户才可以访问!
原创文章,版权所有©️xgqfrms, 禁止转载
标签:zh,算法,密钥,加密,加密算法,MD5 From: https://www.cnblogs.com/xgqfrms/p/16735035.html