gpt4 book ai didi

java - 组合多个加密 key 以生成加密 key

转载 作者:行者123 更新时间:2023-12-02 11:17:51 26 4
gpt4 key购买 nike

我们的系统有多个 SecretKey(例如,一个用于用户,一个用于我们)。我们希望以一种需要所有这些 key 都可用才能解密的方式来加密数据。

我认为正确的方法是使用某种 key 派生函数将源 SecretKey 合并在一起,并将结果用作加密 key 。

假设所有源 key 都是使用以下方式加密生成的 SecretKey:

KeyGenerator generator = KeyGenerator.getInstance("AES");
generator.init(256);
return generator.generateKey();

仅使用源 key 的加密哈希是否安全,或者这是否可能以某种方式引入漏洞?像这样:

SecretKey secretKey1 = ...
SecretKey secretKey2 = ...
SecretKey secretKey3 = ...

MessageDigest md = MessageDigest.getInstance("SHA-256");
md.update(secretKey1.getEncoded());
md.update(secretKey2.getEncoded());
byte[] digest = md.digest(secretKey3.getEncoded());

SecretKey mergedSecretKey = new SecretKeySpec(digest, "AES");

然后在对 Cipher.init() 的调用中使用生成的 mergedSecretKey。

这种方法有任何问题或风险吗?

最佳答案

使用封装加密。最好不要组合哈希值或进行双重加密,尤其是后者可能会导致中间相遇攻击。

关于java - 组合多个加密 key 以生成加密 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50161287/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com