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

简介: 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


      相关文章
      |
      3月前
      |
      测试技术 开发者 Python
      Python单元测试入门:3个核心断言方法,帮你快速定位代码bug
      本文介绍Python单元测试基础,详解`unittest`框架中的三大核心断言方法:`assertEqual`验证值相等,`assertTrue`和`assertFalse`判断条件真假。通过实例演示其用法,帮助开发者自动化检测代码逻辑,提升测试效率与可靠性。
      351 1
      |
      4月前
      |
      机器学习/深度学习 数据采集 数据挖掘
      基于 GARCH -LSTM 模型的混合方法进行时间序列预测研究(Python代码实现)
      基于 GARCH -LSTM 模型的混合方法进行时间序列预测研究(Python代码实现)
      145 2
      |
      4月前
      |
      调度 Python
      微电网两阶段鲁棒优化经济调度方法(Python代码实现)
      微电网两阶段鲁棒优化经济调度方法(Python代码实现)
      131 0
      |
      4月前
      |
      传感器 大数据 API
      Python数字限制在指定范围内:方法与实践
      在Python编程中,限制数字范围是常见需求,如游戏属性控制、金融计算和数据过滤等场景。本文介绍了五种主流方法:基础条件判断、数学运算、装饰器模式、类封装及NumPy数组处理,分别适用于不同复杂度和性能要求的场景。每种方法均有示例代码和适用情况说明,帮助开发者根据实际需求选择最优方案。
      218 0
      |
      4月前
      |
      Python
      Python字符串center()方法详解 - 实现字符串居中对齐的完整指南
      Python的`center()`方法用于将字符串居中,并通过指定宽度和填充字符美化输出格式,常用于文本对齐、标题及表格设计。
      |
      3月前
      |
      人工智能 数据安全/隐私保护 异构计算
      桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
      桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
      420 8
      桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
      |
      4月前
      |
      机器学习/深度学习 数据采集 算法
      【CNN-BiLSTM-attention】基于高斯混合模型聚类的风电场短期功率预测方法(Python&matlab代码实现)
      【CNN-BiLSTM-attention】基于高斯混合模型聚类的风电场短期功率预测方法(Python&matlab代码实现)
      264 4
      |
      3月前
      |
      算法 调度 决策智能
      【两阶段鲁棒优化】利用列-约束生成方法求解两阶段鲁棒优化问题(Python代码实现)
      【两阶段鲁棒优化】利用列-约束生成方法求解两阶段鲁棒优化问题(Python代码实现)
      |
      4月前
      |
      机器学习/深度学习 数据采集 TensorFlow
      基于CNN-GRU-Attention混合神经网络的负荷预测方法(Python代码实现)
      基于CNN-GRU-Attention混合神经网络的负荷预测方法(Python代码实现)
      170 0
      |
      5月前
      |
      数据管理 开发工具 索引
      在Python中借助Everything工具实现高效文件搜索的方法
      使用上述方法,你就能在Python中利用Everything的强大搜索能力实现快速的文件搜索,这对于需要在大量文件中进行快速查找的场景尤其有用。此外,利用Python脚本可以灵活地将这一功能集成到更复杂的应用程序中,增强了自动化处理和数据管理的能力。
      376 0

      推荐镜像

      更多