我在java中使用AES 128位加密。我有一个加密密钥和10位纯文本。
我希望使用AES加密密钥和10位纯文本为HMAC派生一个密钥。在我的情况下,这个纯文本将保持不变。
如何使用上述成分来获得HMAC的密钥。
更准确地说,请参考下面的图表:-我如何实现从各自的输入获得一个新的键。

发布于 2021-01-01 12:49:13
我推荐香港发展基金 -它是一个基于密钥的密钥派生函数(相对于基于密码的)。它接受一个已经很高的熵输入(您的AES键)、一个salt (您可以使用您的“纯文本”)和可选的信息,用于对密钥进行上下文化。最好使用您的主密钥来派生两个单独的密钥,一个用于加密,另一个用于HMAC.并使用info参数来区分这两个键。
发布于 2021-01-01 16:10:13
在这种情况下,这个答案也应该是一个评论(对不起!)@Hunter,NIST SP 800-108将hmac定义为PRF。例如,在python中,可以使用:
hash_algo = hashes.SHA512()
kdf = KBKDFHMAC(algorithm=hash_algo,
mode=Mode.CounterMode,
length=32,
rlen=4,
llen=4,
location=CounterLocation.BeforeFixed, label=label,
context=context,
fixed=None,
backend=backend)
derived_key = kdf.derive(keyMaster) 正如您可以查看的,您有一个选项select该算法哈希。使用的包是cryptography.hazmat.primitives.kdf.kbkdf,其中包括KBKDFHMAC。
问候
https://crypto.stackexchange.com/questions/33298
复制相似问题