2016-07-05 7 views
0

私は、RSA暗号化を使用して複数のコンピュータとの間で送受信されるデータを暗号化および復号化するプログラムを作成しようとしています。私は自分のコンピュータ上の他のコンピュータの公開鍵を格納するフォルダを持っています。私はしかし、このキーファイルをロードし、それを指すpublicKeyオブジェクトを作成することはできません。私の現在の試みは以下に示されていますが、私は他の人々がこれを行うためにどのような方法を使用しているのだろうと思いましたjavaでキーファイルを使用してデータを暗号化するにはどうすればよいですか?

 //Returns the key of a friend (given as input) 

    public PublicKey getFriendsKey(String friend){ 
    try{ObjectInputStream friendsKeyInput = new ObjectInputStream(new fileInputStream(programLocation + "/Text Files/encryptionKeys/" + friend + "PublicKey.key")); 
    PublicKey friendsKey = friendsKeyInput.readObject(); 
    } 
    catch(Exception e){e.printStackTrace();} 
    return friendsKey; 
    } 
+0

データ長は鍵の長さに制限され、対称暗号よりも100〜1000倍遅いことをご存知ですか?そのデータは、一般にAESなどの対称アルゴリズムで暗号化されますか? – zaph

+0

@zaph:パディング/ランダム化のために実際にキー長から少なくとも11オクテットを差し引いたものですが、そのキーはほとんど重要ではありません(少なくとも2048ビット= 256オクテットにする必要があります)。 OP:ファイルがどのように生成されたか、および/またはサンプルファイルを投稿するか(あるいはそれらがすべて似ていない場合はいくつか)を教えてください。テキストでない場合は、16進ダンプを使用します。 –

+0

@ dave_thompson_085私は議論を避けるために(私はここで失敗した)、「キーの長さに制限されている」ということを慎重に述べました。私がパディングを考慮に入れると、私は生データ機能のために泥沼になった。私のコメントの文脈では、非対称暗号化のデータサイズには限界があることを示したいと思います。OPのファイルはキーサイズよりも大きいかもしれません。パディングの問題 – zaph

答えて

0

なぜあなたはObjectInputStreamを使用していますか?おそらくあなたの鍵はserializable java objectではありません。 この回答を参照してください。 Load RSA public key from file

+0

#11410070はSPKI(JavaがX509EncodedKeyと呼ぶもの)とBCを使用している他のPEMをカバーしますが、X509の完全な証明書(あるいは証明書を含むPKS7)、またはOpenSSH形式のpublickeyは全く異なりません。非常に異なっているか、アドホックな2桁形式のさまざまなものです。 –

関連する問題