Python实现密钥密码(加解密)实例详解
本文将介绍如何使用Python实现密钥密码(加解密)的过程,让你了解实现加解密的基本原理,能够快速实现加解密功能。主要包括以下几个部分:
- 前置知识
- 加密算法
- Python实现示例
前置知识
在了解加密算法之前,有几个概念必须要了解:
- 明文:需要进行加密的文本信息
- 密文:经过加密处理后的文本信息
- 密钥:用于对明文进行加密和解密的字符或字符串
- 加密算法:将明文转化为密文的一系列操作
加密算法
常见的加密算法有对称加密算法和非对称加密算法。
对称加密算法
对称加密算法,是指加密和解密使用同一种密钥的加密算法,其主要特点是加密速度快,加密效率高。对称加密的优点是算法公开、加密速度快、加密效率高、加密后的信息只有密钥的拥有者才能解密,缺点是密钥的传输和管理比较困难。
对称加密常用的算法有DES、3DES、AES。
非对称加密算法
非对称加密算法,是指加密和解密使用不同的密钥的加密算法,其中一把密钥被称为公钥,另一把被称为私钥。公钥可以公开使用,任何人都可以获得,私钥则是保密的,只有私钥的拥有者才能获得。非对称加密的优点是密钥的传输和管理相对容易,缺点是加密和解密的速度较慢。
非对称加密常用的算法有RSA、DSA。
Python实现示例
对称加密算法示例
Python有pycryptodome库可以用于加密解密的操作,使用方法如下:
from Crypto.Cipher import AES
def encrypt_AES_ECB(text, key):
encryption_suite = AES.new(key.encode('utf-8'), AES.MODE_ECB)
cipher_text = encryption_suite.encrypt(text.encode('utf-8'))
return base64.b64encode(cipher_text).decode('utf-8')
def decrypt_AES_ECB(cipher_text, key):
decryption_suite = AES.new(key.encode('utf-8'), AES.MODE_ECB)
plain_text = decryption_suite.decrypt(base64.b64decode(cipher_text.encode('utf-8')))
return plain_text.decode('utf-8')
其中encrypt_AES_ECB函数用于加密,decrypt_AES_ECB函数用于解密,需要传入要加密/解密的文本和密钥。以上是使用AES算法的ECB模式,也可以将AES.MODE_ECB替换为AES.MODE_CBC使用CBC模式。在使用之前,需要安装pycryptodome库,安装方法如下:
pip install pycryptodome
非对称加密算法示例
Python内置了RSA算法的模块,可通过以下方式进行使用:
from Crypto.PublicKey import RSA
from Crypto import Random
random_generator = Random.new().read
rsa = RSA.generate(1024, random_generator)
# 获取私钥和公钥
private_pem = rsa.exportKey()
public_pem = rsa.publickey().exportKey()
# 使用私钥加密/公钥解密
from Crypto.Cipher import PKCS1_v1_5
def encrypt_RSA(text, public_key):
rsakey = RSA.importKey(public_key)
cipher = PKCS1_v1_5.new(rsakey)
cipher_text = cipher.encrypt(text.encode('utf-8'))
return base64.b64encode(cipher_text).decode('utf-8')
def decrypt_RSA(cipher_text, private_key):
rsakey = RSA.importKey(private_key)
cipher = PKCS1_v1_5.new(rsakey)
plain_text = cipher.decrypt(base64.b64decode(cipher_text.encode('utf-8')), random_generator)
return plain_text.decode('utf-8')
以上示例中,生成了一个1024位的RSA密钥,然后使用私钥进行加密,使用公钥进行解密。
示例1
# 对称加密算法
text = 'hello world'
key = '1234567890123456'
cipher_text = encrypt_AES_ECB(text, key)
print('加密后:', cipher_text)
plain_text = decrypt_AES_ECB(cipher_text, key)
print('解密后:', plain_text)
以上示例使用AES算法的ECB模式进行加密和解密,使用了密钥'1234567890123456'。运行结果如下:
加密后: BlKNHqEt62dpwkg9ZaFBGA==
解密后: hello world
示例2
# 非对称加密算法
text = 'hello world'
# 生成RSA密钥
random_generator = Random.new().read
rsa = RSA.generate(1024, random_generator)
# 获取私钥和公钥
private_pem = rsa.exportKey()
public_pem = rsa.publickey().exportKey()
cipher_text = encrypt_RSA(text, public_pem)
print('加密后:', cipher_text)
plain_text = decrypt_RSA(cipher_text, private_pem)
print('解密后:', plain_text)
以上示例生成了一个1024位的RSA密钥,然后使用公钥进行加密,使用私钥进行解密。运行结果如下:
加密后: 2XhPOWXmrtID5gqbjUaX0g+XZshErzP7FUc8hB61c7TDhTE1uqNj4RliPWdGs7/lgLWZH/kDp9d44X5YwFQcwA==
解密后: hello world
结语
本文主要分享了Python实现密钥密码(加解密)的过程,介绍了加密算法的基本原理,以及使用Python实现加解密的方法和示例。希望对大家有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python实现密钥密码(加解密)实例详解 - Python技术站