|
MD5的全称是Message-Digest Algorithm 5(信息-摘要算法)。128位长度。目前MD5是一种不可逆算法。
具有很高的安全性。它对应任何字符串都可以加密成一段唯一的固定长度的代码。
SHA1的全称是Secure Hash Algorithm(安全哈希算法) 。SHA1基于MD5,加密后的数据长度更长, 它对长度小于264的输入,产生长度为160bit的散列值。比MD5多32位。 因此,比MD5更加安全,但SHA1的运算速度就比MD5要慢了。
Python 内置的 hashlib 模块就包括了 md5 和 sha1 算法。而且使用起来也极为方便
import hashlib data = 'This a md5 test!' print hashlib.md5(data).hexdigest() # 输出 fdedaafb043d41ff06b6ef249ef53be9 # Python 3.x import hashlib data = 'This a md5 test!' print(hashlib.md5("data".encode('utf-8')).hexdigest())
这段字符串fdedaafb043d41ff06b6ef249ef53be9
就是data转换后的MD5值。
MD5不仅仅是上面这个例子这样用来处理字符串,还有更广泛的用途:
sha1的使用与MD5类似,就像下面这样,所以不再讲解SHA1:
import hashlib hashlib.sha1('This is a sha1 test!').hexdigest()
上面说过可以用MD5来检测两个文件是否相同,但想想,如果是两个很大的文件,担心内存不够用,这时怎么办?
这就要使用 update 方法了。代码如下:
import hashlib def get_file_md5(f): m = hashlib.md5() while True: data = f.read(10240) if not data: break m.update(data) return m.hexdigest() # windows 用户 要使用 'rb'方式打开文件 with open(YOUR_FILE, 'r') as f: file_md5 = get_file_md5(f)
可以用下面这段代码验证一下:
import hashlib x = hashlib.md5() x.update('python,') x.update('xyz') x.hexdigest() hashlib.md5('python,xyz').hexdigest()
这两次的输出是一样的。
SHA1 也是一样的用法。
暂时还没有评论,第一个来评论吧!