2011-12-12 24 views
9

私はRSA公開鍵のバイト配列を持っています。私はこのコードを使用することによって、それの本当の公開鍵オブジェクトを作成することができ、インターネット上のが見つかりました:Java:文字列からRSA公開鍵を作成する方法

PublicKey publicKey = 
    KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(bytes)); 

しかし、私はこのコードを実行するたびに、私はその鍵を使って暗号化されたデータのための別の結果を取得しています。私は暗号化したいデータは常に同じであると確信していますので、キーを表すバイト配列も同じです。

これは正常ですか?

byte[] keyBytes = Base64.decodeBase64(rsa_1024_public_key); 
     // rsa_1024_public key is a constant String 

Cipher c = Cipher.getInstance("RSA"); 

PublicKey publicKey = 
    KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(keyBytes)); 

c.init(Cipher.ENCRYPT_MODE, publicKey); 

return c.doFinal(password.getBytes()); 

これはおそらく、非対称暗号化アルゴリズムの一部である:ここで

は私のコードは、常に他の出力を生成していますか?

ありがとうございました。

+0

RSAは非決定性です。 – SLaks

+0

@SLaks:答えとして投稿しますか?それは正しいです:私は35ポイントを与えるでしょう。 –

+0

実際、15;私はずっと前に代表制限を打った。 :) – SLaks

答えて

7

RSAは非決定性です。

非ランダムパディングモードを選択することで確定的にすることができます。しかし、それは安全ではありません。

+0

私は来週に10を与えるでしょうか? –

+0

気にしないでください。私は一般的に毎週担当者の制限に達しました。 – SLaks

関連する問題