1

一方ではRubyで使用し、もう一方ではコマンドラインで使用した場合のopensslの相互運用性をテストしようとしています。

RSA 証明書を生成し、その公開鍵を次の方法で抽出しました。

openssl req -x509 -nodes -days 1825 -newkey rsa:1024 -keyout mycert.pem -out mycert.pem
openssl rsa -in mycert.pem -pubout > mycert.pub

2 つのことを行う Ruby スクリプトを作成しました。

  1. 最初に公開鍵を使用して、次に秘密鍵を使用してテスト ファイルをエンコード/デコードします (ネットワーク通信を容易にするために、RSA エンコードに加えて Base64 エンコードを使用します)。
  2. システム コマンドを実行して、openssl コマンド ライン ツールで同じテスト ファイルを暗号化します。

この Ruby スクリプトのコードは、次の Gist にあります: https://gist.github.com/dirtyhenry/4673331 (poc-openssl-rsa.rbファイルを参照)

私の質問は、Ruby で生成されpublic-encrypted.txtたファイルが .xml と異なるのはpublic-encrypted-cl64.txtなぜですか? ファイルシステムの副作用が原因ですか? (つまり、一方が文字列で、もう一方がファイルか何かですか?)

ありがとう。

4

1 に答える 1

2

この 2 つが実際に相互運用可能であることがわかりました。パディングがランダム性をもたらし、2 つの連続するエンコーディングが 2 つの異なるエンコードされたデータになるという事実につながるだけです。

参照。http://en.wikipedia.org/wiki/RSA_%28algorithm%29#Padding_schemes :

実際のRSA実装では、通常、暗号化する前に、構造化されたランダム化されたパディングの形式を値mに埋め込みます。

于 2013-03-14T16:53:16.000 に答える