青少年叛逆
青少年叛逆
IT培训
广告招商

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培训机构,在这里推荐大家来老男孩教育。老男孩教育师资团队强大、从业经验丰富、课程体系完善,且拥有真实企业级实战项目,欢迎大家前来试听。

注意:吐槽知乎网只是一个问答与文章免费发布平台,所有信息均有会员免费发布,不产生金钱交易,如果你有资金往来,请及时通过电话与对方联系,调查清楚,确认无误在选择,否则造成你的损失,由自己承担,本平台概不负责,谢谢!

0 个评论

要回复文章请先登录注册

狗粮批发
嘿,进入会员专区!