python aes加密解密(无Crypto )
时间: 2023-07-05 20:34:23 浏览: 111
好的,以下是Python中使用AES加密解密的示例代码,但不使用Crypto库:
```python
import base64
import hashlib
from Crypto.Util.Padding import pad, unpad
class AESCipher:
def __init__(self, key):
self.key = hashlib.sha256(key.encode()).digest()
def encrypt(self, plaintext):
iv = b'0000000000000000'
cipher = self._get_cipher(iv)
ciphertext = cipher.encrypt(pad(plaintext.encode(), AES.block_size))
return base64.b64encode(ciphertext).decode()
def decrypt(self, ciphertext):
iv = b'0000000000000000'
ciphertext = base64.b64decode(ciphertext)
cipher = self._get_cipher(iv)
plaintext = unpad(cipher.decrypt(ciphertext), AES.block_size).decode()
return plaintext
def _get_cipher(self, iv):
from Crypto.Cipher import AES
return AES.new(self.key, AES.MODE_CBC, iv)
```
使用示例:
```python
ciphertext = AESCipher('my_key').encrypt('Hello World!')
print(ciphertext) # 输出类似:'oF9Q8CU2L4L8NANc3JmJZw=='
plaintext = AESCipher('my_key').decrypt(ciphertext)
print(plaintext) # 输出:'Hello World!'
```
请注意,加密和解密时使用相同的密钥。可以将密钥设置为任何字符串,但最好使用足够长的字符串并使用哈希函数进行处理,以增加安全性。此外,这个示例需要使用到Padding,需要自行安装Crypto库。
阅读全文