小编Mic*_*ael的帖子

为什么PBE会生成具有不同盐和迭代次数的相同密钥?

我正在尝试测试PBE加密/解密.我发现PBE生成具有不同盐和迭代计数的相同密钥.当然,使用的密码是相同的.据我所知,相同的密码和不同的salt/iteration应该得到不同的密钥.以下是我的测试代码:

import java.security.Key;
import java.security.SecureRandom;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.PBEKeySpec;

public class PBETest
{
    public static void main(String[] args)
        throws Exception
    {
        String algo = "PBEWithSHA1andDESede";
        System.out.println("====== " + algo + " ======");

        char[] password = "password".toCharArray();
        SecureRandom rand = new SecureRandom();
        byte[] salt = new byte[32];
        rand.nextBytes(salt);
        int iterationCount = rand.nextInt(2048);

        //encryption key
        PBEKeySpec          encPBESpec = new PBEKeySpec(password, salt, iterationCount);
        SecretKeyFactory    encKeyFact = SecretKeyFactory.getInstance(algo);
        Key encKey = encKeyFact.generateSecret(encPBESpec);
        System.out.println("encryptioin iteration: " + iterationCount);

        //decryption key
        rand.nextBytes(salt);
        iterationCount = rand.nextInt(2048);
        PBEKeySpec …
Run Code Online (Sandbox Code Playgroud)

passwords iteration key salt

7
推荐指数
1
解决办法
1万
查看次数

标签 统计

iteration ×1

key ×1

passwords ×1

salt ×1