【发布时间】:2017-10-28 15:50:54
【问题描述】:
我正在尝试实现 AES 自定义密码加密,并希望了解以下代码。
我不太明白为什么需要指定密钥大小 256“PBEKeySpec(password, salt, 65536, 256)”,当我使用“PBKDF2WithHmacSHA256”时,它假设将 SecretKey 生成为 256 位。
在使用我的密码+盐生成密钥后,为什么我需要将其与 SecretKeySpec 关联为 AES 算法。
SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256");
KeySpec spec = new PBEKeySpec(password, salt, 65536, 256);
SecretKey tmp = factory.generateSecret(spec);
SecretKey secret = new SecretKeySpec(tmp.getEncoded(), "AES");
【问题讨论】:
-
明确一点:您问的是基于密码的加密,其中密码用于派生密钥,然后用于加密其他数据,而不是加密密码本身,对吗?跨度>
-
@ArtjomB。是的。我正在尝试实现基于密码的加密。我想我还有一个问题是加密这个“密码”,它是用来加密数据的。
标签: java encryption