2012-12-05 25 views
2

我有一個功能,使用PBE生成密鑰,我已經在互聯網上搜索並找出以下代碼。後getencoded密鑰仍然是密碼相同

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

documentationgetEncoded()回報

外部編碼形式時,需要Java虛擬機,外鍵的標準表示使用傳送密鑰,當作爲關鍵到某個其他方

由於您使用基於密碼的加密,因此密碼的外部形式是密碼本身,因此此行爲是正確的。

+0

你的意思是,我不能使用PBE生成文件加密密鑰並將此密鑰存儲到密鑰環中? – panda

相關問題