Python数据加密方法详解|为你的隐私再上一把锁!

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: Python数据加密方法详解

 前言

数字化时代下,数据安全是各大公司及个人最关心的一点,作为一个Python语言使用者我们该如何进行数据的加密呢?本文二哥领着大家来了解一下。

记得关注、评论、收藏、点赞!!!

目录

前言

一、数据加密的概念

二、直接编码加密

三、Binascii编码加密

三、Base64编码加密

四、URL编码加密

五、Hashlib加密

1、MD5

2、SHA1加密

六、Hmac加密

七、PyCryptodome加密


一、数据加密的概念

数据加密的概念如下:

数据加密,是一门历史悠久的技术,指通过加密算法和加密密钥将明文转变为密文,而解密则是通过解密算法和解密密钥将密文恢复为明文。它的核心是密码学。

数据加密仍是计算机系统对信息进行保护的一种最可靠的办法。它利用密码技术对信息进行加密,实现信息隐蔽,从而起到保护信息的安全的作用。

在计算机中,我们通常都是对二进制编码的格式进行加密,在用Python进行加密的时候我们通常使用的手段就是对原数据进行各种类型的编码。

二、直接编码加密

简介

在Python提供了encode和decode作为编码器和译码器,我们直接使用encode就可以起到加密的效果。

加密方式

\x :16进制。

代码示例

# 代码
str1 = '这是个秘密'
estr = str1.encode('utf8')
print(ustr)
dstr = estr.decode('utf8')
print(dstr)
# 输出
b'\xe8\xbf\x99\xe6\x98\xaf\xe4\xb8\xaa\xe7\xa7\x98\xe5\xaf\x86'
这是个秘密

image.gif

三、Binascii编码加密

简介

在使用Python自带的encode方法进行数据加密的时候,很明显的可以看出加密后的内容是16进制的结果,此时使用Binascii模块我们可以将直接encode编码后的结果做进一步的优化。

加密方式

Binascii中提供了两个重要的函数:

    • b2a_hex :将encode后的编码进行优化。
    • a2b_hex :将优化后的编码回退成encode编码。

    代码示例

    # 代码
    str1 = '这是个秘密'
    estr = str1.encode('utf8')
    print(ustr)
    dstr = estr.decode('utf8')
    print(dstr)
    import binascii
    b2a = binascii.b2a_hex(estr)
    print(b2a)
    a2b = binascii.a2b_hex(b2a)
    print(a2b)
    # 输出
    b'\xe8\xbf\x99\xe6\x98\xaf\xe4\xb8\xaa\xe7\xa7\x98\xe5\xaf\x86'
    这是个秘密
    b'e8bf99e698afe4b8aae7a798e5af86'
    b'\xe8\xbf\x99\xe6\x98\xaf\xe4\xb8\xaa\xe7\xa7\x98\xe5\xaf\x86'

    image.gif

    三、Base64编码加密

    简介

    Base64模块会使用65个字符(计算机从0开始计数)来表示任意的二进制数据。

    加密方式

    65个字符 :(A~Z a~z 0~9 + / =)

    代码示例

    # 代码
    import base64
    str1 = b'It\'s a secret'
    b64_estr = base64.b64encode(str1)
    print(b64_str)
    b64_dstr = base64.b64decode(b64_estr)
    print(b64_dstr)
    # 输出
    b'aGVsbG8='
    b"It's a secret"

    image.gif

    四、URL编码加密

    简介

    通常我们看到的网页信息中是不会包含中文及特殊字符的,URL编码就是起到了此类的作用。

    加密方式

    将超出ASCII范围的字符转换成十六进制。

    代码示例

    # 代码
    import urllib
    str1 = '这是个秘密'
    estr = urllib.parse.quote(str1)
    print(estr)
    dstr = urllib.parse.unquote(estr)
    print(dstr)
    # 输出
    %E8%BF%99%E6%98%AF%E4%B8%AA%E7%A7%98%E5%AF%86
    这是个秘密

    image.gif

    五、Hashlib加密

    1、MD5

    简介

    我们熟知的MD5加密(信息-摘要算法)在Python3中使用Hashlib模块进行操作,关于该算法的原理,我们可以简单的理解为:通过一个函数,把任意长度的数据转换为一个长度固定的数据串。

    加密方式

    通常用16进制的字符串表示。

    性质

      • 不可逆性:MD5加密是一种散列函数(哈希函数),他是一个单向密码体制,即从明文到密文的不可逆映射,只有加密过程没有解密过程。
      • 压缩性:任意长度的数据,算出的MD5值长度都是固定的。
      • 抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。
      • 抗碰撞性:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。

      代码示例

      # 代码
      import hashlib
      str1 = '这是个秘密'
      # encode加密方式
      hl = hashlib.md5()
      hl.update(str1.encode('utf8'))
      hash1 = hl.hexdigest()
      print(hash1)
      # 双层加密
      '''
      如果没有参数,所以md5遵守一个规则,生成同一个对应关系,如果加了参数,
      就是在原先加密的基础上再加密一层,这样的话参数只有自己知道,防止被撞库,
      因为别人永远拿不到这个参数
      '''
      h2 = hashlib.md5(bytes(str1, encoding='utf8'))
      hash2 = h2.hexdigest()
      print(hash2)
      h2.update(bytes(str1, encoding='utf8'))
      print(h2.hexdigest())
      # 输出
      ccabfe6517601612d67090e0a5553298
      ccabfe6517601612d67090e0a5553298
      939fe93415c6a8d0a4f5b5b8bb9e1dcb

      image.gif

      注:我们很多下载文件内容的命名就是md5加密后的结果。

      2、SHA1加密

      简介

      sha1算法是基于MD5的一种加密算法,加密后的数据长度会比MD5更长,但是效率也会变的更慢。

      代码示例

      # 代码
      import hashlib
      str1 = "这是个秘密"
      S1 = hashlib.sha1(str1.encode("utf-8")).hexdigest()
      print(S1)
      # 输出
      23ef694ec95931e499bc98783bce30687304aa0c

      image.gif

      六、Hmac加密

      简介

      和hashlib一样,Hmac也是基于哈希算法的一种加密方式,并且Hmac提供的API和hashlib基本一致。

      代码示例

      # 代码
      import hmac
      str1 = '这是个秘密'
      # new中需要传入一个密钥
      hl = hmac.new(b'key')
      hl.update(str1.encode('utf8'))
      hash1 = hl.hexdigest()
      print(hash1)
      # 输出
      e5530035642465913334be1620943182

      image.gif

      七、PyCryptodome加密

      简介

      最出名的Python密码学第三方软件包PyCrypto于2013年停止更新了,随之时间推移该项目的一个分支PyCryptodome已经将PyCrypto进行了替代。

      PyCryptodome加密主页

      关于PyCryptodome的安装和使用在不同的系统及版本上有不同的操作,想了解PyCryptodome的读者可以移步主页进行了解。

      Welcome to PyCryptodome’s documentation — PyCryptodome 3.180b0 documentation


      目录
      打赏
      0
      0
      0
      0
      16
      分享
      相关文章
      Python 中调用 DeepSeek-R1 API的方法介绍,图文教程
      本教程详细介绍了如何使用 Python 调用 DeepSeek 的 R1 大模型 API,适合编程新手。首先登录 DeepSeek 控制台获取 API Key,安装 Python 和 requests 库后,编写基础调用代码并运行。文末包含常见问题解答和更简单的可视化调用方法,建议收藏备用。 原文链接:[如何使用 Python 调用 DeepSeek-R1 API?](https://apifox.com/apiskills/how-to-call-the-deepseek-r1-api-using-python/)
      堆叠集成策略的原理、实现方法及Python应用。堆叠通过多层模型组合,先用不同基础模型生成预测,再用元学习器整合这些预测,提升模型性能
      本文深入探讨了堆叠集成策略的原理、实现方法及Python应用。堆叠通过多层模型组合,先用不同基础模型生成预测,再用元学习器整合这些预测,提升模型性能。文章详细介绍了堆叠的实现步骤,包括数据准备、基础模型训练、新训练集构建及元学习器训练,并讨论了其优缺点。
      177 3
      Python GIL(全局解释器锁)机制对多线程性能影响的深度分析
      在Python开发中,GIL(全局解释器锁)一直备受关注。本文基于CPython解释器,探讨GIL的技术本质及其对程序性能的影响。GIL确保同一时刻只有一个线程执行代码,以保护内存管理的安全性,但也限制了多线程并行计算的效率。文章分析了GIL的必要性、局限性,并介绍了多进程、异步编程等替代方案。尽管Python 3.13计划移除GIL,但该特性至少要到2028年才会默认禁用,因此理解GIL仍至关重要。
      112 16
      Python GIL(全局解释器锁)机制对多线程性能影响的深度分析
      |
      12天前
      |
      java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
      java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
      45 3
      java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
      随机的暴力美学蒙特卡洛方法 | python小知识
      蒙特卡洛方法是一种基于随机采样的计算算法,广泛应用于物理学、金融、工程等领域。它通过重复随机采样来解决复杂问题,尤其适用于难以用解析方法求解的情况。该方法起源于二战期间的曼哈顿计划,由斯坦尼斯拉夫·乌拉姆等人提出。核心思想是通过大量随机样本来近似真实结果,如估算π值的经典示例。蒙特卡洛树搜索(MCTS)是其高级应用,常用于游戏AI和决策优化。Python中可通过简单代码实现蒙特卡洛方法,展示其在文本生成等领域的潜力。随着计算能力提升,蒙特卡洛方法的应用范围不断扩大,成为处理不确定性和复杂系统的重要工具。
      70 21
      Python3 自定义排序详解:方法与示例
      Python的排序功能强大且灵活,主要通过`sorted()`函数和列表的`sort()`方法实现。两者均支持`key`参数自定义排序规则。本文详细介绍了基础排序、按字符串长度或元组元素排序、降序排序、多条件排序及使用`lambda`表达式和`functools.cmp_to_key`进行复杂排序。通过示例展示了如何对简单数据类型、字典、类对象及复杂数据结构(如列车信息)进行排序。掌握这些技巧可以显著提升数据处理能力,为编程提供更强大的支持。
      35 10
      Python中使用MySQL模糊查询的方法
      本文介绍了两种使用Python进行MySQL模糊查询的方法:一是使用`pymysql`库,二是使用`mysql-connector-python`库。通过这两种方法,可以连接MySQL数据库并执行模糊查询。具体步骤包括安装库、配置数据库连接参数、编写SQL查询语句以及处理查询结果。文中详细展示了代码示例,并提供了注意事项,如替换数据库连接信息、正确使用通配符和关闭数据库连接等。确保在实际应用中注意SQL注入风险,使用参数化查询以保障安全性。
      Python-打印99乘法表的两种方法
      本文详细介绍了两种实现99乘法表的方法:使用`while`循环和`for`循环。每种方法都包括了步骤解析、代码演示及优缺点分析。文章旨在帮助编程初学者理解和掌握循环结构的应用,内容通俗易懂,适合编程新手阅读。博主表示欢迎读者反馈,共同进步。
      Python中解决TSP的方法
      旅行商问题(TSP)是寻找最短路径,使旅行商能访问每个城市一次并返回起点的经典优化问题。本文介绍使用Python的`ortools`库解决TSP的方法,通过定义城市间的距离矩阵,调用库函数计算最优路径,并打印结果。此方法适用于小规模问题,对于大规模或特定需求,需深入了解算法原理及定制策略。
      76 15
      |
      2月前
      |
      Python调用API接口的方法
      Python调用API接口的方法
      437 5

      热门文章

      最新文章

      AI助理

      你好,我是AI助理

      可以解答问题、推荐解决方案等