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 に答える