2016-12-01 7 views
1

RSA公開鍵と秘密鍵が2つの異なるファイルにあります。 これまで私が行ってきたことです。JavaのRSA公開鍵ファイルを使用してAES鍵を暗号化します

public SecretKey getAESkey() throws Exception, NoSuchAlgorithmException{   
     KeyGenerator generator = KeyGenerator.getInstance("AES"); 
     generator.init(128); 
     SecretKey sKey = generator.generateKey(); 
     return sKey; // will be passed to encryptSecretKey method 
    } 

    public byte[] encryptSecretKey (SecretKey sKey) 
    { 
     Cipher cipher = null; 
     byte[] key = null; 

     try 
     { 
     // initialize the cipher with the user's public key 
     cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding"); 
     cipher.init(Cipher.ENCRYPT_MODE, keyHolder.keyPair.getPublic()); 
     key = cipher.doFinal(sKey.getEncoded()); 
     } 
     catch(Exception e) 
     { 
     e.printStackTrace(); 
     } 
     return key; 
    } 

私は間違っています。私は公開鍵と秘密鍵を保持するオブジェクト(keyHolder)を作った。私はgetPublic()メソッドを呼び出してその公開鍵にアクセスしようとしています。しかし、代わりに私の公開鍵ファイルに直接アクセスし、AES鍵を暗号化するためにバイトストリームを読みたいと思います。それ、どうやったら出来るの?

答えて

0

RSA公開鍵を保存するには、単にPublicKey.getEncoded()を呼び出して、バイト配列を返すことができます。

RSA公開鍵を取得するには、タイプ"RSA"KeyFactoryのインスタンスを使用し、同じバイト配列を受け入れるX509EncodedKeySpecを使用して公開鍵を生成します。

残りの部分は通常のオフラインのバイナリファイルI/Oです。


鍵はDERに保存されるX509証明書構造(X509EncodedKeySpecのその名)で使用されるSubjectPublicKeyInfo構造をコードしていました。 PKCS#1互換RSA公開鍵は、その構造内に組み込まれています。追加情報は、特定のキータイプを示すために使用されます。

openssl asn1parse -inform DER -in <publickey.der>を使用すると、ファイルの内容を表示できます。

関連する問題