Python基础之数据加密(收藏这一篇就够了!)

本文详细介绍了Python中的MD5、SHA1、Base64和AES加密算法,包括加密规则、应用场景及实际代码示例,帮助理解并实践数据加密技术。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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! 我爱你中国!

加密解密步骤:

  1. 加密内容.encode(‘utf-8’),将加密内容变为Bytes格式;
  2. 进行加密;
  3. 进行解密;
  4. 解密后的内容.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 代码实例

  1. 一般的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
  1. 带参数的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
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

这么神奇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值