使用crypto api加密解密
时间: 2023-09-03 14:11:01 浏览: 156
crytoapi加解密代码
5星 · 资源好评率100%
Crypto API 是一个通用的加密API,可用于实现各种加密和解密算法。下面是一个使用 Crypto API 进行加密解密的示例:
```python
import hashlib
from Crypto.Cipher import AES
# 对称加密算法
class SymmetricEncryption:
def __init__(self, key):
self.key = key
# 加密函数
def encrypt(self, data):
cipher = AES.new(self.key, AES.MODE_EAX)
nonce = cipher.nonce
ciphertext, tag = cipher.encrypt_and_digest(data.encode('utf-8'))
return (nonce + ciphertext + tag)
# 解密函数
def decrypt(self, data):
nonce = data[:AES.block_size]
tag = data[-16:]
ciphertext = data[AES.block_size:-16]
cipher = AES.new(self.key, AES.MODE_EAX, nonce=nonce)
plaintext = cipher.decrypt(ciphertext)
try:
cipher.verify(tag)
return plaintext.decode('utf-8')
except:
return None
# 哈希算法
class HashAlgorithm:
def __init__(self, algorithm):
self.algorithm = algorithm
# 计算哈希值
def hash(self, data):
h = hashlib.new(self.algorithm)
h.update(data.encode('utf-8'))
return h.hexdigest()
```
上面的代码定义了两个类:`SymmetricEncryption` 和 `HashAlgorithm`。 `SymmetricEncryption` 类使用 AES 对称加密算法进行加密和解密。 `HashAlgorithm` 类使用哈希算法计算哈希值。
使用示例:
```python
# 对称加密示例
key = b'Sixteen byte key'
encryptor = SymmetricEncryption(key)
encrypted_data = encryptor.encrypt('hello world')
print(encrypted_data)
decrypted_data = encryptor.decrypt(encrypted_data)
print(decrypted_data)
# 哈希算法示例
hasher = HashAlgorithm('sha256')
hashed_data = hasher.hash('hello world')
print(hashed_data)
```
在上面的示例中,我们使用了 AES 对称加密算法和 SHA256 哈希算法对数据进行了加密和哈希。在实际应用中,我们可以根据需要选择不同的加密和哈希算法来保护数据的安全性。
阅读全文