Python中加密解密算法详解!老男孩Python培训学校
加密算法,是现在每个软件项目里必须用到的内容。广泛应用在包括了用户登入、数字签名、数据传输等多个场合,那么Python语言中的加密算法都有哪些呢?以下是详细的内容:
1、url encode加密
简介:当url地址含有中文,或者参数有中文的时候,这个算是很正常了,但是把这样的url作为参数传递的时候(最常见的callback),需要把一些中文甚至'/'做一下编码转换。
# -*- coding: utf-8 -*-
# @Time : 2022/9/29 10:43
# @Author : lzc
# @Email : hybpjx@163.com
# @File : utilsMiddlewares.py
# @cnblogs : cnblogs.com/zichliang/
# @Software: PyCharm
import urllib.parse
text = "我爱吃鸡腿"
s = urllib.parse.quote(text)
print(s) # %E6%88%91%E7%88%B1%E5%90%83%E9%B8%A1%E8%85%BF
u = urllib.parse.unquote(s)
print(u) #我爱吃鸡腿
2、unicode加密
其实这应该不算一种加密 更多的应该算是一种编码与解码,但是由于运用很广泛 我也加进去了
# -*- coding: utf-8 -*-
# @Time : 2023/2/28 10:43
# @Author : lzc
# @Email : hybpjx@163.com
# @File : utilsMiddlewares.py
# @cnblogs : cnblogs.com/zichliang/
# @Software: PyCharm
str1 = "你好"
# 编码
enStr1 = str1.encode('unicode-escape').decode()
print(enStr1) # \u4f60\u597d
# 解码
deStr1 = enStr1.encode().decode('unicode-escape')
print(deStr1) # 你好
3、Base64 加密
简介:Base64 是一种用 64 个字符来表示任意二进制数据的方法。
# -*- coding: utf-8 -*-
# @Time : 2022/9/29 10:43
# @Author : lzc
# @Email : hybpjx@163.com
# @File : utilsMiddlewares.py
# @cnblogs : cnblogs.com/zichliang/
# @Software: PyCharm
import base64
def base64_encode(text):
encode_data = base64.b64encode(text.encode())
return encode_data
def base64_decode(encode_data):
decode_data = base64.b64decode(encode_data)
return decode_data
if __name__ == '__main__':
text = 'I love Python!'
encode_data = base64_encode(text)
decode_data = base64_decode(encode_data)
print('Base64 编码:', encode_data)
print('Base64 解码:', decode_data)
# Base64 编码: b'SSBsb3ZlIFB5dGhvbiE='
# Base64 解码: b'I love Python!'
4、MD5
简介:全称 MD5 消息摘要算法(英文名称:MD5 Message-Digest
Algorithm),又称哈希算法、散列算法,由美国密码学家罗纳德·李维斯特(Ronald Linn Rivest)设计,于 1992 年作为 RFC 1321
被公布,用以取代 MD4 算法。摘要算法属于单向加密,这意味着用摘要算法处理后的明文无法被解密。
摘要算法的第二个特点密文是固定长度的,它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示)。之所以叫摘要算法,它的算法就是提取明文重要的特征。使用摘要算法后,两个不同的明文可能会生成相同的密文,但这种情况非常罕见。
# -*- coding: utf-8 -*-
# @Time : 2022/9/29 10:43
# @Author : lzc
# @Email : hybpjx@163.com
# @File : utilsMiddlewares.py
# @cnblogs : cnblogs.com/zichliang/
# @Software: PyCharm
import hashlib
def md5_test1():
md5 = hashlib.new('md5', 'I love python!'.encode('utf-8'))
print(md5.hexdigest())
def md5_test2():
md5 = hashlib.md5()
md5.update('I love '.encode('utf-8'))
md5.update('python!'.encode('utf-8'))
print(md5.hexdigest())
if __name__ == '__main__':
md5_test1() # 21169ee3acd4a24e1fcb4322cfd9a2b8
md5_test2() # 21169ee3acd4a24e1fcb4322cfd9a2b8
5、PBKDF2
简介:英文名称:Password-Based Key Derivation Function 2.PBKDF2 是 RSA
实验室的公钥加密标准(PKCS)系列的一部分,
2017 年发布的 RFC 8018 (PKCS #5 v2.1)推荐使用 PBKDF2 进行密码散列。
PBKDF2 将伪随机函数(例如
HMAC),把明文和一个盐值(salt)作为输入参数,然后进行重复运算,并最终产生密钥,如果重复的次数足够大,破解的成本就会变得很高。
# -*- coding: utf-8 -*-
# @Time : 2022/9/29 10:43
# @Author : lzc
# @Email : hybpjx@163.com
# @File : utilsMiddlewares.py
# @cnblogs : cnblogs.com/zichliang/
# @Software: PyCharm
import binascii
from Cryptodome.Hash import SHA1
from Cryptodome.Protocol.KDF import PBKDF2
text = 'I love Python!'
salt = b'43215678'
result = PBKDF2(text, salt, count=10. hmac_hash_module=SHA1)
result = binascii.hexlify(result)
print(result)
# b'7fee6e8350cfe96314c76aaa6e853a50'
想要学习Python,却又担心找不到合适的Python培训机构,在这里推荐大家来老男孩教育。老男孩教育师资团队强大、从业经验丰富、课程体系完善,且拥有真实企业级实战项目,欢迎大家前来试听。
注意:吐槽知乎网只是一个问答与文章免费发布平台,所有信息均有会员免费发布,不产生金钱交易,如果你有资金往来,请及时通过电话与对方联系,调查清楚,确认无误在选择,否则造成你的损失,由自己承担,本平台概不负责,谢谢!