我目前正在使用使用 AES 128 密钥的Fernet加密。但是我的客户需要使用 AES 256。我对密码学不是很熟悉,但这是我目前所理解的。
Fernet 需要一个分成两半的 256 位密钥。前半部分是签名密钥,后半部分是加密密钥。因为它们是 128 位长,所以它是 AES 128。
将输入密钥加倍并修改如下实现以获得 AES 256 是否足够?
class Fernet(object):
def __init__(self, key, backend=None):
if backend is None:
backend = default_backend()
key = base64.urlsafe_b64decode(key) # Here 512 bits long instead of 256
self._signing_key = key[:16] # double this
self._encryption_key = key[16:] # double this
self._backend = backend