2

我有一个使用 PBE 生成密钥的功能,我在互联网上搜索并找到了以下代码。

class PBE{
    public PBE(String pw) {
        this.password = pw;
    }
    public SecretKey generateKey() throws NoSuchAlgorithmException, InvalidKeySpecException {
        // make password
        PBEKeySpec keySpec = new PBEKeySpec(this.password.toCharArray(),this.salt,20);
        // create key instance
        SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("PBEWithMD5AndDES");
        // generate key
        SecretKey key = keyFactory.generateSecret(keySpec);
        return key;
    }
}

我使用这个功能作为

PBE myPBE = new PBE("102a102s");
SecretKey myKey = myPBE.generateKey();
System.out.println(myKey.getEncoded());

但是,输出与我输入的密码相同。我不知道为什么

4

1 回答 1

1

根据文件getEncoded()退货

当在 Java 虚拟机之外需要密钥的标准表示时使用的密钥的外部编码形式,例如将密钥传输给其他方时

由于您使用基于密码的加密,密码的外部形式就是密码本身,因此这种行为是正确的。

于 2012-12-05T09:18:08.903 回答