6

DES SecretKeyをファイルに保存できるようにしたいと思っています。これにより、後でインポートして使用できるようになります。私はいくつかのルートを見てきましたが、それらはすべて少し長蛇の列になっているようです、これを行うための簡潔で簡単な方法はありませんか?

4

3 に答える 3

7

SecretKeyJavaでファイルにを保存する最も「自然な」方法は、:を使用するKeyStoreことです(もちろん、証明書も保存できますが)。

ドキュメントの例は、秘密鍵と秘密鍵を保存する方法を示しています。また、保護パラメーター(ここではパスワード)を使用して暗号化します。

于 2012-05-10T15:49:14.050 に答える
6

javax.crypto.SecretKey extends java.security.Key

java.security.Key extends java.io.Serializable

したがって、キーを保存しているファイルシステムを信頼する場合は、を使用してキーを書き出し、を使用java.io.ObjectOutputStreamして読み込むことができますjava.io.ObjectInputStream

ObjectOutputStream oout = new ObjectOutputStream(outputStream);
try {
  oout.writeObject(myKey);
} finally {
  oout.close();
}

入力は似ています

Key key;
ObjectInputStream oin = new ObjectInputStream(inputStream);
try {
  key = (Key) oin.readObject();
} finally {
  oin.close();
}

キーを生成するには、KeyFactoryまたはSecretKeyFactory

SecretKeyFactory factory = SecretKeyFactory.getInstance(algorithm);

そして秘密を生成する

factory.generateSecret(keySpec);

アルゴリズムに適した主要な仕様が与えられます。アルゴリズム固有の実装へのポインタについては、 KeySpecjavadocを参照してください。KeySpec

DESについては、もっと現代的なDESKeySpecものが必要かもしれませんが、を参照してください。

于 2012-05-10T15:37:18.440 に答える
2

いくつかの点が明確ではありません。「長蛇の列」と見なすもの、キーの生成方法、キーの形式。キーがない場合は、keytool(付属のユーティリティ)を使用できます。 jdk)それを生成し、キーストアと呼ばれるファイルに入れます。KeyGeneratorクラスとKeyStoreクラスを使用して、プログラムで同じことを行うこともできます(どちらも非常によく文書化されており、KeyStore javadocには、あなたが望むように正確に実行する例があります)。

これが長引く場合は、キーを生成してクリアテキストとしてテキストファイルに入れることができます。次に、BufferedReaderを使用してアクセスできます。このファイルにアクセスできる人なら誰でもあなたのキーを知っているので、これは安全性が低くなりますが、少し簡単です。

于 2012-05-10T15:51:04.733 に答える