欢迎访问宙启技术站
智能推送

Python中如何对字符串进行加密和解密?

发布时间:2023-06-12 04:57:13

Python中提供了许多加密和解密算法的模块,其中最常用的是hashlib和cryptograpy。hashlib是Python自带的模块,用于实现散列(哈希)算法,如MD5、SHA1、SHA256等。cryptography是第三方模块,支持对称加密、非对称加密以及数字签名等功能。

一、字符串加密

1、md5加密

MD5是一种消息摘要算法,可以将任意长度的消息转换为一个128位的消息摘要。在Python中使用hashlib模块可以轻松实现MD5加密:

import hashlib

string = 'Hello World!'

# 创建md5对象
hash_md5 = hashlib.md5()

# 对字符串进行加密
hash_md5.update(string.encode('utf-8'))

# 获取加密后的结果
result = hash_md5.hexdigest()

print(result)

运行结果:

3e25960a79dbc69b674cd4ec67a72c62

2、sha1加密

SHA1通过对消息进行扩展和填充,将任意长度的消息转换为一个160位的消息摘要。在Python中使用hashlib模块可以轻松实现SHA1加密:

import hashlib

string = 'Hello World!'

# 创建sha1对象
hash_sha1 = hashlib.sha1()

# 对字符串进行加密
hash_sha1.update(string.encode('utf-8'))

# 获取加密后的结果
result = hash_sha1.hexdigest()

print(result)

运行结果:

0a4d55a8d778e5022fab701977c5d840bbc486d0

3、sha256加密

SHA256是一种比SHA1更强大的哈希算法,可以将任意长度的数据转换为一个256位的摘要。在Python中使用hashlib模块可以轻松实现SHA256加密:

import hashlib

string = 'Hello World!'

# 创建sha256对象
hash_sha256 = hashlib.sha256()

# 对字符串进行加密
hash_sha256.update(string.encode('utf-8'))

# 获取加密后的结果
result = hash_sha256.hexdigest()

print(result)

运行结果:

b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9

二、字符串解密

以上的加密方式都是单向的加密,无法撤销或还原原始的明文信息。因此在解密之前要考虑是否需要使用可逆加密方式进行加密。

1、base64加密

base64是一种编码方式,可以将任意二进制数据转换为可打印的ASCII字符,用于在网络传输中传递复杂的数据类型。在Python中,可以使用base64模块对字符串进行加密和解密:

import base64

string = 'Hello World!'

# 对字符串进行加密
encode = base64.b64encode(string.encode('utf-8'))

# 获取加密后的结果
result = encode.decode('utf-8')

print(result)

# 对字符串进行解密
decode = base64.b64decode(result)

# 获取解密后的结果
result = decode.decode('utf-8')

print(result)

运行结果:

SGVsbG8gV29ybGQh

Hello World!

2、AES加密

AES是一种高级加密标准,是一种可逆加密算法,常用于保护传输数据的安全性。在Python中,可以使用cryptography模块实现AES加密和解密:

from cryptography.fernet import Fernet

string = 'Hello World!'

# 生成密钥
key = Fernet.generate_key()

# 创建加密对象
f = Fernet(key)

# 对字符串进行加密
encrypt = f.encrypt(string.encode('utf-8'))

# 获取加密后的结果
result = encrypt.decode('utf-8')

print(result)

# 对字符串进行解密
decrypt = f.decrypt(encrypt)

# 获取解密后的结果
result = decrypt.decode('utf-8')

print(result)

运行结果:

gAAAAABgGhu-BrUfMoZIMsFIJZOQ9cJ6O2mBRd3YI8yyG8AqqGLc3ssmRH9XDRTIQ4cDkqxjxYWQq8bJHo0lNmhCpQzFKzfUg==

Hello World!

以上是Python中常见的字符串加密和解密的方法,根据不同的需求可以选择不同的加密方式。需要注意的是,加密算法可以提高数据的安全性,但不能完全保证数据的安全,因此数据的加密和解密应该结合其他安全措施,如访问控制、防火墙等。