DES SecretKeyをファイルに保存できるようにしたいと思っています。これにより、後でインポートして使用できるようになります。私はいくつかのルートを見てきましたが、それらはすべて少し長蛇の列になっているようです、これを行うための簡潔で簡単な方法はありませんか?
3 に答える
SecretKey
Javaでファイルにを保存する最も「自然な」方法は、:を使用するKeyStore
ことです(もちろん、証明書も保存できますが)。
ドキュメントの例は、秘密鍵と秘密鍵を保存する方法を示しています。また、保護パラメーター(ここではパスワード)を使用して暗号化します。
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);
アルゴリズムに適した主要な仕様が与えられます。アルゴリズム固有の実装へのポインタについては、 KeySpec
javadocを参照してください。KeySpec
DESについては、もっと現代的なDESKeySpec
ものが必要かもしれませんが、を参照してください。
いくつかの点が明確ではありません。「長蛇の列」と見なすもの、キーの生成方法、キーの形式。キーがない場合は、keytool(付属のユーティリティ)を使用できます。 jdk)それを生成し、キーストアと呼ばれるファイルに入れます。KeyGeneratorクラスとKeyStoreクラスを使用して、プログラムで同じことを行うこともできます(どちらも非常によく文書化されており、KeyStore javadocには、あなたが望むように正確に実行する例があります)。
これが長引く場合は、キーを生成してクリアテキストとしてテキストファイルに入れることができます。次に、BufferedReaderを使用してアクセスできます。このファイルにアクセスできる人なら誰でもあなたのキーを知っているので、これは安全性が低くなりますが、少し簡単です。