没有项目描述
aes-keywrap的Python项目详细描述
AES密钥包
rfc 3394 aes密钥包装/解包的实现
http://www.ietf.org/rfc/rfc3394.txt
此外,根据RFC 5649,替代IV
http://www.ietf.org/rfc/rfc5649.txt
这是一种对称密钥加密算法。它应该只被使用 加密密钥(短且全局唯一的字符串)
在文档中,用于这种算法的密钥是 通常称为kek(密钥加密密钥),用于区分 它来自数据加密密钥。
用法
importbinasciifromaes_keywrapimportaes_wrap_key,aes_unwrap_keyKEK=binascii.unhexlify("000102030405060708090A0B0C0D0E0F")CIPHER=binascii.unhexlify("1FA68B0A8112B447AEF34BD8FB5A7B829D3E862371D2CFE5")PLAIN=binascii.unhexlify("00112233445566778899AABBCCDDEEFF")assertaes_unwrap_key(KEK,CIPHER)==PLAINassertaes_wrap_key(KEK,PLAIN)==CIPHER
为什么要使用特殊的密钥加密算法?
一句话:大小。假设钥匙足够高 熵是全局唯一的,并且足够小 不需要流加密,AES密钥包可以避免 增大大小的iv(初始值)或nonce 密文的。这可能是一个重要的 节省—如果加密的数据是32 字节AES-256密钥,AES-GCM将导致 60字节密文(87%开销),将导致AES-CTR或AES-CBC 在一个48字节的密文中(50%的开销),也不会提供 经过身份验证的加密,但AES密钥包 会产生32字节的密文(无开销)。
在一个生成了许多密钥的应用程序中 和加密的(例如 数据库中的每一行),此开销可能非常大。
另一个重要的用例是与 现有系统。