首页 > 编程语言 >MD5 加密算法 All In One

MD5 加密算法 All In One

时间:2022-09-27 16:47:27浏览次数:80  
标签:zh 算法 密钥 加密 加密算法 MD5

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 以 SMTPSSTARTTLS 引入。

另一方面,信任网络则采用去中心化的概念,取代了依赖数字证书认证机构的公钥基础设施,因为每一张电子证书在信任链中最终只由一个根证书授权信任,信任网络的公钥则可以累积多个用户的信任

常见的公钥加密算法有: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

相关文章

  • 计算hash和md5的工具md5deep
    计算hash和md5的工具md5deep下载地址:https://sourceforge.net/projects/md5deep/还是比较好用!C:\Users\lx>md5deeptest.pymd5deep:WARNING:Youarerunninga32-b......
  • Java实现SHA1单向加密算法
    importjava.security.MessageDigest;importjava.security.NoSuchAlgorithmException;publicclassSha1Util{publicStringsha1(Stringdata)throwsNoSuch......
  • C#:多态之虚方法、抽象类、接口、 类的序列化、MD5加密。
     (总的来说多态的作用便是解决代码的冗余问题,但代码更加具有可读性,更加的简洁)多态的第一种表现形式:虚方法usingSystem;usingSystem.Collections.Generic;usingSystem......
  • c#中的MD5加密
    要求对123进行MD5加密,返回加密后的字符串”202cb962ac59075b964b07152d234b70“即为验证成功staticvoidMain(string[]args){//要求对1......
  • 【代码片段】Qt6.2.4 获取文件 MD5
    参考https://www.bilibili.com/video/BV14t411b7EL环境环境版本windows10QT6.2.4QtCreator8.0.1(Community)qmake代码段第一种一次性......
  • MD5算法工具类
    importjava.security.MessageDigest;importjava.security.NoSuchAlgorithmException;/***MD5算法工具类*@authorXLINK**/publicclassMD5Tool{/......
  • 文件切割(sqlit),合并(cat),比对(diff,md5sum)
    1.文件切割sqlitLinuxsplit命令用于将一个文件分割成数个。该指令将大文件分割成较小的文件,在默认情况下将按照每1000行切割成一个小文件。1.1语法split[--help][-......
  • 密码学基础之非对称加密算法
    非对称加密算法非对称加密的一般流程是服务端生成一个密钥对(私钥和公钥),然后将公钥发送给客户端。之后服务可以通过私钥加密数据发送给客户端,客户端收到消息后通过公钥解密......
  • MD5 到底是不是加密算法?
    在回答这个问题之前,我们先分别来了解一下两个知识点:什么是MD5算法?什么是加密算法?一、MD5算法MD5即Message-DigestAlgorithm5(信息-摘要算法5),用于确保信息传输完......
  • FASTQ | md5 | 原始文件保存、传输、完整性检验
     像fastq这样的原始文件是肯定不能丢掉的,必须保存在硬盘里或者放到ftp服务器上,以便之后再度调取分析。fastq保存时问题不大,但因为文件巨大,传输通常需要几小时-几天,非常......