Python基础之数据加密
文章目录
备注: 本文的代码示例可以直接复制使用,只要传入对应参数即可~~ 方便实用!
1. 准备工作
重点:首先确保我们待加密的内容是Bytes格式!
我们所说的加密方式,都是对二进制编码的格式进行加密的。所以,在加密之前,我们要首先确保我们待加密的内容是Bytes格式,否则会报错。 那么我们如何得到Bytes格式呢? 秘诀就是使用encode()和decode()方法; 代码如下:
str = 'I LOVE China! 我爱你中国!'
str_en = str.encode('utf-8') # 将内容变为 Bytes格式 ! 这样才可以加密!
print(str_en) # b'I LOVE China! \xe6\x88\x91\xe7\x88\xb1\xe4\xbd\xa0\xe4\xb8\xad\xe5\x9b\xbd\xef\xbc\x81'
str_de = str_en.decode('utf-8') # 解密后,将内容变回字符串内容,这样才可读;
print(str_de) # I LOVE China! 我爱你中国!
加密解密步骤:
- 加密内容.encode(‘utf-8’),将加密内容变为Bytes格式;
- 进行加密;
- 进行解密;
- 解密后的内容.decode(‘utf-8’),将解密内容变得可读;
2. MD5加密
MD5信息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。
2.1 加密规则
MD5算法的原理可简要的叙述为:MD5码以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。
2.2 应用场景
-
密码管理:一般数据库中所存储的密码,都是经过MD5加密处理的,这种加密没有解密的办法,只能正向运算(加密),不能反向运算(解密)。所以当我们要求管理员查看一下我们的密码是什么的时候,管理员会告诉我们:我只能给你重置密码,原因就在于此;虽然MD5也存在漏洞,但还是相对安全的;
-
电子签名:我们下载各类文件时,下载页面上除了会提供软件的下载地址以外,还会给出一串长长的字符串。这串字符串其实就是该软件的MD5 值,它的作用就在于下载该软件后,对下载得到的文件用专门的软件(如 Windows MD5 check 等)做一次 MD5 校验,以确保我们获得的文件与该站点提供的文件为同一文件。
2.3 代码实例
- 一般的MD5加密
# 1. md5加密
import hashlib
str = 'I LOVE China! 我爱你中国!'
str_en = str.encode('utf-8')
h = hashlib.md5(str_en)
h_en = h.hexdigest()
print(h_en) # 1c07f68a93ec867b4b315b90f2098b24
- 带参数的MD5加密
MD5虽然加密的安全性相对较好,但仍可以被撞库破解,为增加安全性,我们可以再传入一个参数,相当于再进行一次加密,提高安全性,方法如下:
# 增加自己的参数'admin',可以防止撞库破解密码;
str = 'I LOVE China! 我爱你中国!'
str_en = str.encode('utf-8')
h = hashlib.md5(str_en)
h.update('admin'.encode('utf-8'))
h_en = h.hexdigest()
print(h_en