Hash,通常翻译作“散列”,也有直接音译为”哈希”的,就是把任意长度的输入(又叫作预映射,pre-image),经过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间一般远小于输入的空间,不一样的输入可能会散列成相同的输出,而不可能从散列值来惟一的肯定输入值。算法
简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。数据库
HASH主要用于信息安全领域中加密算法,他把一些不一样长度的信息转化成杂乱的128位的编码里,叫作HASH值.也能够说,hash就是找到一种数据内容和数据存放地址之间的映射关系安全
什么是MD5算法dom
MD5讯息摘要演算法(英语:MD5 Message-Digest Algorithm),一种被普遍使用的密码杂凑函数,能够产生出一个128位的散列值(hash value),用于确保信息传输完整一致。MD5的前身有MD二、MD3和MD4。函数
MD5功能网站
输入任意长度的信息,通过处理,输出为128位的信息(数字指纹);
不一样的输入获得的不一样的结果(惟一性);编码
MD5算法的特色加密
MD5算法是否可逆?spa
MD5不可逆的缘由是其是一种散列函数,使用的是hash算法,在计算过程当中原文的部分信息是丢失了的。翻译
MD5用途
防止被篡改:
好比发送一个电子文档,发送前,我先获得MD5的输出结果a。而后在对方收到电子文档后,对方也获得一个MD5的输出结果b。若是a与b同样就表明中途未被篡改。
好比我提供文件下载,为了防止不法分子在安装程序中添加木马,我能够在网站上公布由安装文件获得的MD5输出结果。
SVN在检测文件是否在CheckOut后被修改过,也是用到了MD5.
防止直接看到明文:
防止抵赖(数字签名):
利用hashlib模块写一个md5加密的程序:
import hashlib,string,random def make_md5(string): str = hashlib.md5() #调用md5方法 str.update(bytes(string,encoding="utf-8")) #传入bytes类型的字符 print(str.hexdigest()) #输出加密后的字符 with open("pwd.txt","a+",encoding="utf-8") as f: f.write(string + "-" + str.hexdigest() +"\n") while True: username = input("请输入用户名:") # str = input("请输入要生成MD5的字符串:") make_md5(str)