2

私は、javaやopensslのファイルの暗号化にそれほど慣れていません。私は学校からの基礎を知っていますが、実際にそれを実装したことはありません。JavaのOpenSSLコマンドと同等

は、今私は、次の3つのコマンドを与えてきました:

//generate random base64 private key 
openssl rand -base64 32 -out (keypath) 
//Encrypt random key with public key 
openssl rsautl -encrypt -inkey (encryptionkey) -pubin -in (input) -out (output) 
//encrypt file 
openssl enc -aes-256-cbc -salt -in (input) -out (output) -pass file:(keypath) 

は、私は正確にJavaでこれを複製する必要があります。これを行う簡単な方法はありますか? これを簡単にするライブラリがありますか?

最初の行では、Java 7のSecureRandom関数を使用してバイト配列を生成しています。この配列は、Apache Core Commonsコーデックライブラリを使用してbase64にアンコールします。そうですね:

byte[] bytes = new byte[32]; 
new SecureRandom().nextBytes(bytes); 
String test = new String(Base64.encodeBase64(bytes)); 
test = test.substring(0, Math.min(test.length(), 10)); 

もし私が間違っていないなら、これは同じことを行うべきです。

私は上記のスクリプトからの出力を含むファイルを提供された公開RSAキーを使って暗号化する必要があります。ファイルの暗号化とファイル内のデータの違いはありますか?意味は実際のファイルの追加ビットですか?

しかし、それは塩とaes-256-cbc暗号化標準が必要なので難しくなります。私は必要なすべての機能を網羅したライブラリがあることを願っています。もしそうなら誰も私を正しい方向に向けることができますか?私は弾力のある城の暗号ライブラリについて読んでいたが、私が必要とするものを見つけるのは大したことはなかった。

種類はランダムなバイト配列のコード

+0

「javax.crypto」。 – Kayaman

+1

それは1つではなく3つの質問です。そして、それはトピックではない図書館の要求のようです。 – Raedwald

+1

[Java SecureRandomの適切な使用](http://www.cigital.com/blog/properuse-of-javas-securerandom/)も参照してください。 – jww

答えて

1

に関しては結構ですが、Base64では、ランダムなバイトをエンコードする理由、それは本当に唯一のASCII charactrersが要求される場合、おそらく使用の表示のための唯一のneccessaryです。

AES暗号化については、javax.cryptoのJavaドキュメントを参照してください。

SecureRandomを使用してivを作成し、それを暗号化されたデータの先頭に追加します。秘密にする必要はありません。復号化では、ivのデータをivから選択します。