python实现加解密
时间: 2023-07-07 08:43:08 浏览: 76
Python中可以使用多种加解密算法,下面是一些常见的实现方式:
1. Caesar密码
Caesar密码是一种简单的字母替换加密算法,可以通过将明文中的每个字母替换为固定偏移量后的字母来实现加密。例如,将每个字母按字母表顺序向后偏移3个位置,即A->D,B->E,C->F,...,Z->C。
加密代码示例:
```python
def caesar_encrypt(text, shift):
result = ""
for char in text:
if char.isalpha():
char_code = ord(char)
char_code = (char_code - 97 + shift) % 26 + 97
result += chr(char_code)
else:
result += char
return result
```
解密代码示例:
```python
def caesar_decrypt(text, shift):
result = ""
for char in text:
if char.isalpha():
char_code = ord(char)
char_code = (char_code - 97 - shift) % 26 + 97
result += chr(char_code)
else:
result += char
return result
```
2. AES加密
AES是一种高级加密标准,是一种对称密钥加密算法,可以加密任意长度的数据。Python中可以使用`pycryptodome`库来实现AES加密。
加密代码示例:
```python
from Crypto.Cipher import AES
def aes_encrypt(text, key):
cipher = AES.new(key.encode(), AES.MODE_ECB)
padded_text = text + (AES.block_size - len(text) % AES.block_size) * chr(AES.block_size - len(text) % AES.block_size)
encrypted_text = cipher.encrypt(padded_text.encode())
return encrypted_text.hex()
```
解密代码示例:
```python
def aes_decrypt(text, key):
cipher = AES.new(key.encode(), AES.MODE_ECB)
encrypted_text = bytes.fromhex(text)
decrypted_text = cipher.decrypt(encrypted_text).decode()
return decrypted_text.rstrip(chr(AES.block_size - len(decrypted_text) % AES.block_size))
```
3. RSA加密
RSA是一种非对称密钥加密算法,可以实现数字签名、加密和解密。Python中可以使用`pycryptodome`库来实现RSA加密。
生成密钥代码示例:
```python
from Crypto.PublicKey import RSA
def generate_rsa_key_pair(key_size=2048):
key = RSA.generate(key_size)
public_key = key.publickey().export_key()
private_key = key.export_key()
return public_key, private_key
```
加密代码示例:
```python
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_v1_5
def rsa_encrypt(text, public_key):
key = RSA.import_key(public_key)
cipher = PKCS1_v1_5.new(key)
encrypted_text = cipher.encrypt(text.encode())
return encrypted_text.hex()
```
解密代码示例:
```python
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_v1_5
def rsa_decrypt(text, private_key):
key = RSA.import_key(private_key)
cipher = PKCS1_v1_5.new(key)
encrypted_text = bytes.fromhex(text)
decrypted_text = cipher.decrypt(encrypted_text, None).decode()
return decrypted_text
```
以上是三种加密算法的Python实现示例,具体使用时需要根据实际需求来选择合适的算法。
阅读全文