卡密用Python怎么做?
时间: 2024-08-16 19:07:01 浏览: 97
在Python中创建卡密通常是指生成加密后的密钥或者其他安全相关的数据。这可以涉及到对明文进行哈希、加盐散列、对称加密或者非对称加密等操作。这里以简单的AES(Advanced Encryption Standard)对称加密为例:
```python
from Crypto.Cipher import AES
import base64
def encrypt(key, plaintext):
# 首先需要将key处理成AES块大小的字节
key = base64.b64encode(key.encode()).decode()
cipher = AES.new(key.encode(), AES.MODE_EAX)
ciphertext, tag = cipher.encrypt_and_digest(plaintext.encode())
return cipher.nonce + tag + ciphertext # 返回加密后的信息,包括nonce(随机数)和tag(校验)
def decrypt(key, encrypted_data):
nonce = encrypted_data[:16] # 提取nonce
tag = encrypted_data[16:32]
ciphertext = encrypted_data[32:] # 提取剩下的ciphertext
cipher = AES.new(key.encode(), AES.MODE_EAX, nonce=nonce)
plaintext = cipher.decrypt(ciphertext).decode()
try:
cipher.verify(tag) # 检查tag是否匹配,如果不匹配说明数据已损坏
return plaintext
except ValueError:
print("Decryption failed - invalid tag")
return None
# 示例:使用卡密(key)加密和解密字符串
key = "your_secret_key" # 替换为你的实际秘钥
plaintext = "Hello, World!"
encrypted_text = encrypt(key, plaintext)
decrypted_text = decrypt(key, encrypted_text)
print(f"Encrypted: {encrypted_text}")
print(f"Decrypted: {decrypted_text}")
```
在这个例子中,`encrypt`函数接受一个密钥和明文,然后返回加密后的数据;`decrypt`函数则根据相同的密钥解密数据。
阅读全文