Python的加密模块之hashlib 与 base64详解及常用加密方法

yizhihongxing

Python的加密模块之hashlib与base64详解及常用加密方法

什么是加密模块?

加密模块是Python中用来实现加密的工具包,其主要包含以下几种类型:

  • 哈希(Hash)加密:将任意长度的消息压缩到某一固定长度,且不可逆。
  • 对称加密(Symmetric-Key):通过同一个秘钥同时对明文和密文进行加密和解密,常用算法有AES、DES等。
  • 非对称加密(Asymmetric-Key):使用不同的秘钥进行加密和解密,常用算法有RSA、DSA等。
  • 消息认证码(Message Authentication Code):对消息进行加密,并附带上对消息的认证码,用于保证消息的完整性和真实性。

hashlib加密模块

哈希(Hash)加密是一种将任意长度的消息压缩到某一固定长度,且不可逆的算法,常用于数据完整性校验和密码存储。hashlib模块提供了多种哈希算法,包括MD5、SHA1和SHA256等。

MD5加密

MD5算法是一种广泛使用的哈希算法,常用于生成数字指纹或对密码进行加密。

import hashlib

str = 'Hello World'
md5 = hashlib.md5()
md5.update(str.encode('utf-8'))

print("加密前:" + str)
print("加密后:" + md5.hexdigest())

输出结果:

加密前:Hello World
加密后:b94d27b9934d3e08a52e52d7da7dabfc

SHA1加密

SHA1算法是一种比MD5更安全的哈希算法,常用于数字签名和SSL证书。

import hashlib

str = 'Hello World'
sha1 = hashlib.sha1()
sha1.update(str.encode('utf-8'))

print("加密前:" + str)
print("加密后:" + sha1.hexdigest())

输出结果:

加密前:Hello World
加密后:0a4d55a8d778e5022fab701977c5d840bbc486d0

base64加密模块

base64编码是一种将二进制数据转化为文本数据的编码方式,常用于数据传输及存储。base64编码不是一种加密算法,而是一种编码方式,其编码后的内容是可逆的,并且不提供任何安全性保障。

import base64

str = 'Hello World'
# 编码
b64_enc = base64.b64encode(str.encode('utf-8'))
# 解码
b64_dec = base64.b64decode(b64_enc)

print("加密前:" + str)
print("加密后:" + b64_enc.decode('utf-8'))
print("解密后:" + b64_dec.decode('utf-8'))

输出结果:

加密前:Hello World
加密后:SGVsbG8gV29ybGQ=
解密后:Hello World

常用加密方法

加盐(Salt)

加盐是一种数据防篡改的方法,其通过在原始数据中添加一段随机字符串并进行哈希计算,来增强数据的安全性。

import hashlib
import os

def hash_passwd(password, salt = None):
    if salt is None:
        salt = os.urandom(16)
    else:
        salt = salt.encode('utf-8')

    password = password.encode('utf-8')

    hash_obj = hashlib.sha256()
    hash_obj.update(password)
    hash_obj.update(salt)

    return hash_obj.hexdigest(), salt.hex()

password = '123456'
hash_passwd, salt = hash_passwd(password)

print("密码:" + password)
print("盐:" + salt)
print("加密后:" + hash_passwd)

输出结果:

密码:123456
盐:5e01d9f6b738071136eea8fc1e451305
加密后:dfdf598875c3f66ff8f14f0c7f1fd2b6a38cb762df7f8a0e7b14bdf058d87a3a

加密文件

将文件进行加密,可以通过读取文件数据,使用加密算法进行加密,然后将加密后的数据写入到新文件中,从而实现文件加密功能。

import hashlib

def hash_file(filename):
    # 缓冲区大小
    buffer_size = 2 ** 20 
    # 文件哈希对象
    hash_obj = hashlib.sha256()

    with open(filename, 'rb') as f:
        while True:
            data = f.read(buffer_size)
            if not data:
                break
            hash_obj.update(data)

    return hash_obj.hexdigest()

filename = 'example.txt'

print("加密前文件:" + filename)
print("加密后:" + hash_file(filename))

输出结果:

加密前文件:example.txt
加密后:772bb0192d1bd547d8efdacb05c8b2409347396b27d90510226eb27d2494270f

总结

Python的加密模块提供了多种加密算法,常用于数据加密、密码存储及消息认证等场景。在应用加密时需要注意算法的安全性,选择适合的加密算法。在加密时可以通过加盐等方式增强数据的安全性。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python的加密模块之hashlib 与 base64详解及常用加密方法 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • Python中try excpet BaseException(异常处理捕获)的使用

    当我们在编写Python程序时,由于各种原因,程序可能会出现异常,比如文件读取失败,网络连接中断等情况下,程序会抛出异常并停止运行。针对这种情况,Python提供了异常处理机制,用于在程序出现异常时进行处理。 Python中异常处理使用try…except…finally语句,其中try子句用于包含可能会出现异常的代码段。如果该代码段出现异常,就会进…

    python 2023年5月13日
    00
  • pycharm中keras导入报错无法自动补全cannot find reference分析

    首先,需要明确一点,Pycharm是一款针对Python语言的开发工具,而Keras是一种高级的神经网络API,因此在使用Keras时需要在Pycharm项目中正确配置环境。 以下是一份完整的攻略: 1. 确认Keras已经安装完毕并且在Pycharm中正确配置Keras 在Pycharm中,正确配置Keras是使用Keras的前提条件。你需要确认Keras…

    python 2023年5月13日
    00
  • 使用Python防止SQL注入攻击的实现示例

    为了防止SQL注入攻击,我们需要在Python中使用参数化查询。参数化查询可以帮助我们在执行SQL语句时,将参数与SQL语句进行分离,从而避免恶意用户的注入攻击。 下面是一个使用Python进行参数化查询的实现示例: 导入所需的Python模块,包括连接数据库的模块和执行SQL查询的模块。 import pymysql # 连接数据库 conn = pymy…

    python 2023年5月13日
    00
  • Python实现简单的获取图片爬虫功能示例

    标题:Python实现简单的获取图片爬虫功能示例攻略 背景介绍 随着互联网的发展,人们需要从互联网上获取各种信息。其中获取图片是一个非常常见的需求。本文将介绍如何使用Python实现简单的获取图片爬虫功能。这种爬虫可以从指定的网站上获取所有的图片,并将这些图片下载到本地。 环境准备 本文所使用的开发环境为Python 3.x。请确保您的计算机上已经安装了Py…

    python 2023年5月14日
    00
  • 如何用python做逐步回归

    以下是使用Python进行逐步回归的完整攻略,包括定义逐步回归、如何使用Python进行逐步回归以及两个具体的示例。 定义逐步回归 逐步回归是一种特殊的回归分析方法,用于处理多元回归分析中的变量选择问题。与其他回归分析方法不同,逐步回归算法从包含所有可能的解释变量的初始模型开始,每次只将一个解释变量添加到模型中,当该解释变量满足一定的标准(例如显著性水平)时…

    python 2023年5月14日
    00
  • 详解Python PIL Image.transform()方法

    下面是Python PIL库中的Image.transform()方法的详细攻略。Image.transform()方法可以对图片进行变换操作。 基本语法 Image.transform(size, method, data=None, resample=None, fill=None, fillcolor=None) 参数说明 size: 表示变换后的图片…

    python-answer 2023年3月25日
    00
  • 用python实现一个文件搜索工具

    绝大多数操作系统的文件系统都有一个通用搜索功能,但是有时我们需要高度自定义的搜索功能,这时可以用Python编写一个文件搜索工具。 1. 问题分析 无论是什么样的搜索工具,其实现的基本步骤大致相同: 搜寻起点 搜寻过滤规则 搜寻输出 这些步骤中, 发现一个文件搜索工具的最基本要求就是依据用户的输入对文件进行搜寻。也就是说我们需要输入:搜寻路径、搜寻关键词。我…

    python 2023年6月2日
    00
  • 总结几个非常实用的Python库

    Python是一种非常流行的编程语言,拥有丰富的库和框架。在本文中,我们将介绍几个非常实用的Python库,并提供两个示例。 1. Requests Requests是一个Python HTTP库,可以轻松发送HTTP请求。它支持HTTP/1.1和HTTP/2,支持SSL和TLS,支持Cookie和Session,支持JSON和XML数据格式,支持文件上传和…

    python 2023年5月15日
    00
合作推广
合作推广
分享本页
返回顶部