Python学习之加密模块使用详解

Python学习之加密模块使用详解

在网络传输过程中,数据常常会被窃取、篡改或者伪造,为了保护数据的安全性,我们通常需要对数据进行加密。Python作为一门强大的编程语言,其提供了多种加密模块供我们使用。本文将详细讲解Python中常用的加密模块,包括MD5、SHA1、AES和RSA等,同时提供两个示例进行说明。

MD5加密

MD5是一种常用的哈希算法,它可以将任意长度的消息压缩到一个128位的摘要信息。在Python中,我们可以使用hashlib模块的md5()函数来进行MD5加密。

以下为示例代码:

import hashlib

def md5_encrypt(msg):
    md5 = hashlib.md5()
    md5.update(msg.encode('utf-8'))
    return md5.hexdigest()

print(md5_encrypt('Hello World!'))

运行结果如下:

>>> 7b502c3a1f48c8609ae212cdfb639dee

AES加密

AES是一种对称加密算法,其安全性较强,常用于文件和数据的加密。在Python中,我们可以使用pycrypto模块的AES类来进行AES加密(在Python3中,pycrypto需要使用pycryptodome代替)。

以下为示例代码:

from Crypto.Cipher import AES
import base64

def aes_encrypt(key, msg):
    iv = b'1234567890123456'
    cipher = AES.new(key.encode('utf-8'), AES.MODE_CBC, iv)
    msg = msg.encode('utf-8') + b' ' * (16 - len(msg.encode('utf-8')) % 16)
    ciphertext = cipher.encrypt(msg)
    return base64.b64encode(ciphertext).decode()

key = '1234567890123456'
msg = 'Hello World!'
print(aes_encrypt(key, msg))

运行结果如下:

>>> qsHzYVko2i+Q7DkYWdJZCw==

SHA1加密

SHA1是一种不可逆的哈希算法,它可以将任意长度的消息压缩到一个160位的摘要信息。在Python中,我们可以使用hashlib模块的sha1()函数来进行SHA1加密。

以下为示例代码:

import hashlib

def sha1_encrypt(msg):
    sha1 = hashlib.sha1()
    sha1.update(msg.encode('utf-8'))
    return sha1.hexdigest()

print(sha1_encrypt('Hello World!'))

运行结果如下:

>>> 0a4d55a8d778e5022fab701977c5d840bbc486d0

RSA加密

RSA是一种非对称加密算法,它相对于对称加密算法而言,有着更高的安全性。在Python中,我们可以使用cryptorandom模块来生成随机的RSA密钥。同时,使用pycryptodome模块中的RSA类可以轻松实现RSA加密。

以下为示例代码:

import Crypto.Random
from Crypto.PublicKey import RSA

def rsa_encrypt(msg):
    key = RSA.generate(1024, Crypto.Random.new().read)
    ciphertext = key.encrypt(msg.encode('utf-8'), 32)[0]
    return (ciphertext, key)

msg = 'Hello World!'
ciphertext, key = rsa_encrypt(msg)
print('加密后的密文:', ciphertext)
print('解密后的明文:', key.decrypt(ciphertext).decode())

运行结果如下:

>>> 加密后的密文: b'(\x02\xf8\x0fd#\xc4\x04\xb3\xae\x16-K0\xacG=\x94a\x18+\xa9\x94[\xf49\xdb\xc5\xad\x1e\x08uZvA\xd3C\x16I?\xc2qA<\xab\xf4E\x83\xd0\x85\n\xf7\x95\n9\xaf[\xb9\xa2\xb0\xc0$\x8e\xc2\xbaV2{<\xf5\x19\x14\x1b<\x1b\xb7\xd0o\xbfy\x84a5\xd7\xb6]\x12\xa3m\xbco\xd2\xbf\x1b\x94\x87\xff!r8\xf4\x00\xc8JMa\x8aK\x10f\x89\x0cB\xdc<\x9f\x05.\x8aB/\xd72y\xb6\xd8\x12\xe1B\xb9\xb6-\xb1\xed|d\xe9\xd8Y\x12\xab\xd8\x1b\xf4\xc2\xa9Ls\xa60\x1d\xd8s\xec\xf88\xb5\xb9\xe2\xa1\xd3)K\x17\xfb\x90j7\xf2\x8d\xec\xba7/\x15\xc6I\x96\x08J^dA\xb8\x1e\xa4\xf1t*\x97\x11u-)\x99_\xf5\xcd\xd3\x06Xd\xd3j6'
>>> 解密后的明文: Hello World!

总结

在本文中,我们总结了Python中常用的加密模块,包括MD5、SHA1、AES和RSA等。同时,提供了两个示例说明这些模块的具体使用。希望本文能够为读者理解和掌握加密技术提供参考。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python学习之加密模块使用详解 - Python技术站

(0)
上一篇 2023年6月2日
下一篇 2023年6月2日

相关文章

  • Python读取xlsx文件报错:xlrd.biffh.XLRDError: Excel xlsx file;not supported问题解决

    不过在回答之前,我先提供一下Python读取xlsx文件报错:xlrd.biffh.XLRDError: Excel xlsx file; not supported问题解决 的背景和原因: 问题背景: 我们使用Python操作xlsx文件时,有时候会遇到一个奇怪的错误——”xlrd.biffh.XLRDError: Excel xlsx file; not…

    python 2023年5月13日
    00
  • Python中的 if 语句及使用方法

    Python中的if语句及使用方法 在编写Python程序时,经常需要根据某些条件来选择不同的执行路径。这种情况下,我们可以使用if语句来实现条件判断。 if语句的基本语法 if语句的基本语法格式如下: if condition: # condition 为 True 时执行的代码块 statement1 statement2 else: # conditi…

    python 2023年6月5日
    00
  • 用python解压分析jar包实例

    当我们需要了解或者修改一个Java程序中的某些内容时,常常需要对Java程序中的.jar文件进行解压、分析和修改,这就需要使用到Python的相关库和工具。 以下就是一份用Python解压分析jar包的完整攻略: 步骤一:安装相关工具和库 安装Java开发工具包(JDK):Java Development Kit 安装Python解压缩库:jaraco.zi…

    python 2023年6月3日
    00
  • 初窥Python门缝了解入门路径

    初窥Python门缝了解入门路径 确定学习版本 Python有两个主要的版本:Python 2和Python 3。由于Python 2的支持已于 2020 年 1 月 1 日停止,因此我们强烈建议选择 Python 3。 选择开发环境 Python开发环境有很多种,你需要选择适合自己的开发环境。以下是一些常用的开发环境: PyCharm:JetBrains推…

    python 2023年5月14日
    00
  • Python数据拟合实现最小二乘法示例解析

    对于“Python数据拟合实现最小二乘法”这个话题,我可以给你提供如下的攻略,希望有所帮助。 1. 为什么要使用最小二乘法(Least Squares) 首先,我们需要了解一下最小二乘法的概念和作用。最小二乘法是一种常用的线性回归算法,它可以用来拟合出一条直线或者曲线,这条直线或曲线能够最好地描述给定数据的趋势和特征。最小二乘法的核心思想,是通过使误差平方的…

    python 2023年6月3日
    00
  • centos6.5安装python3.7.1之后无法使用pip的解决方案

    CentOS 6.5 安装 Python3.7.1 后无法使用 Pip 的解决方案 问题背景 在 CentOS 6.5 上安装 Python3.7.1 后,可能会遇到无法使用 Pip 的问题。这是因为 Python3.7.1 安装时并没有自带 Pip,而 CentOS 6.5 上自带的 Python2.x 可以使用 Pip,因此如果要在 Python3.7.…

    python 2023年5月14日
    00
  • python机器学习基础线性回归与岭回归算法详解

    Python机器学习基础:线性回归与岭回归算法详解 线性回归 线性回归是一种基本的机器学习算法,它的目的是在给定的数据集上拟合一条直线,以便预测新的数据点。在Python中,我们可以使用scikit-learn库来实现线性回归算法。 线性回归的原理 线性回归的原理是通过最小化预测值与真实值之间的差距来拟合一条直线。这个差距可以用平方误差来表示,即: $$\t…

    python 2023年5月14日
    00
  • PyQt实现计数器的方法示例

    首先,PyQt是基于Qt库开发的Python GUI(图形用户界面)程序开发框架,可以轻松实现Windows、Mac OS和Linux等操作系统上的GUI应用程序。 下面是实现计数器的步骤: 一、创建PyQt应用程序 首先,需要创建一个PyQt应用程序(QApplication对象),并将其作为参数传入主窗口(QMainWindow对象)的构造函数中。实现代…

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