gpt4 book ai didi

java - 定义一个key来生成key

转载 作者:行者123 更新时间:2023-11-30 04:24:56 25 4
gpt4 key购买 nike

我正在制作一个关于 Java 安全性的项目。服务器收到一个密码,并使用此密码插入 MAC 以验证一个特定文件的一致性。

Mac m;
SecretKey sk;
sk = KeyGenerator.getInstance( "AES" ).keygenerator();/* what i don't want to use */
byte[]mac=null;
Mac m = Mac.getInstance("HmacSHA1");
m.init( password ); /* it's wrong */
m.update("work of security".getBytes());
mac = m.doFinal();

我能理解的是如何定义一个 SecretKey 到 MAC init...

最佳答案

用于从密码派生 AES key 的两种典型方法是:

  1. 使用密码的原始字节。此选项不是很强(受 dictionary attacks 影响),并且依赖于恰好 128/192/256 位的密码。

  2. 使用函数(例如 PBKDF2)派生 key 。

您需要找出 key 是如何派生的。代码中的两个选项是:

原始字节

SecretKey aesKey = new SecretKeySpec(password.getBytes(someCharset), "AES");

求导函数

PBKDF2 示例:

SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
SecretKey aesKey = factory.generateSecret(new PBEKeySpec(password, salt,
iterations, 256));

salt 值是一个随机字节数组(即可能是八个字节)。可以增加迭代以提高安全性,但会牺牲性能。

关于java - 定义一个key来生成key,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16174497/

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