我有一个使用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());
但是,输出与我输入的密码相同。我不知道为什么
答案 0 :(得分:1)
根据documentation,getEncoded()
返回
在Java虚拟机外部需要标准密钥表示时使用的密钥的外部编码形式,如将密钥传输给其他方时
由于您使用基于密码的加密,因此外部形式的密码本身就是密码,因此这种行为是正确的。