6

DES で暗号化と復号化の両方を行うプログラムを作成しています。暗号化プロセス中に使用したのと同じキーを復号化中に使用する必要がありますか? 私の問題は、暗号化と復号化が異なるマシンで実行されることです。これは、暗号化プロセス中にキーが生成される方法です。

SecretKey key = KeyGenerator.getInstance("DES").generateKey();

それで、キーをファイルに書き込もうと思いました。しかし、SecretKey オブジェクトを String に型キャストできるように見えますが、その逆はできません! では、テキスト ファイルに含まれるキーを抽出するにはどうすればよいでしょうか。そして、このステートメントへの入力として渡しますか?

 decipher.init(Cipher.DECRYPT_MODE, key, paramSpec);

または、暗号化プロセスと復号化プロセスの両方で、ユーザーからの入力としてキーを取得することは可能ですか?

4

1 に答える 1

13

これを行う:

SecretKey key = KeyGenerator.getInstance("DES").generateKey();
byte[] encoded = key.getEncoded();
// save this somewhere

じゃあ後で:

byte[] encoded = // load it again
SecretKey key = new SecretKeySpec(encoded, "DES");

しかし、DES は現在安全ではないことを覚えておいてください (比較的簡単にブルートフォースされる可能性があります)。代わりに AES を使用することを強く検討してください (「DES」を「AES」に置き換えるだけです)。

于 2011-06-19T19:26:15.320 に答える