在getencoded之后,密钥仍然与密码相同

时间:2012-12-05 08:53:44

标签: java secret-key

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

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());

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

1 个答案:

答案 0 :(得分:1)

根据documentationgetEncoded()返回

  

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

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