不使用初始向量的标识符加密通常是指使用一种称为“电子密码本模式(Electronic Codebook Mode)”的加密模式。在该模式下,每个明文块都直接用密钥加密,没有使用初始向量。以下是一个示例代码,演示了如何使用AES算法的电子密码本模式进行加密和解密:
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad
import base64
def encrypt(plaintext, key):
cipher = AES.new(key, AES.MODE_ECB)
ciphertext = cipher.encrypt(pad(plaintext.encode(), AES.block_size))
return base64.b64encode(ciphertext).decode()
def decrypt(ciphertext, key):
cipher = AES.new(key, AES.MODE_ECB)
decrypted = cipher.decrypt(base64.b64decode(ciphertext))
return unpad(decrypted, AES.block_size).decode()
# 测试
key = b'This is a 16 byte key'
plaintext = "Hello, World!"
print("明文:", plaintext)
encrypted = encrypt(plaintext, key)
print("加密后:", encrypted)
decrypted = decrypt(encrypted, key)
print("解密后:", decrypted)
这个示例使用了pycryptodome
库来实现AES加密和解密。首先,我们定义了encrypt
函数和decrypt
函数,分别用于加密和解密操作。然后,我们定义了一个16字节的密钥和一个明文字符串。在加密过程中,我们使用了AES.MODE_ECB
模式,创建了一个AES加密器对象,并使用密钥对明文进行加密。然后,我们对加密结果进行Base64编码以便于存储和传输。在解密过程中,我们使用相同的密钥和模式创建了一个AES解密器对象,并对加密后的数据进行解密和解填充操作。
请注意,电子密码本模式下的加密不提供消息完整性和认证,因此在实际应用中可能需要考虑使用其他加密模式或者添加消息认证码(MAC)来确保数据的完整性和安全性。此外,尽量避免使用固定的密钥,最好是使用随机生成的密钥。