4

opensslコマンドラインツールを使用してシェルスクリプトに変換したい次のJavaコードがあります。

java.security.Signature sig = java.security.Signature.getInstance("SHA1WithRSA");
sig.initSign(privateKey);
sig.update(data);
byte[] signatureBytes = sig.sign();

これまで私は以下を試しました:

openssl dgst -sha1 -binary < data.der > data.hash
openssl rsautl -sign -inkey private.key -keyform pem -in data.hash -out data.rsa

ただし、同じ出力は生成されません。フォーマットやパディングなどと関係があるのではないかと思います。opensslスクリプトを修正するにはどうすればよいですか?

上記の両方のコードは再現可能な結果を​​生成しますが、結果はjavaとopensslシェルスクリプトで異なります。

すべての提案をいただければ幸いです。

よろしくイェンス

4

1 に答える 1

10

ついに自分で答えを見つけました。

次のopensslコマンドは、SHA1WithRSAを実行し、Javaコードと同じ結果を生成します。

openssl sha1 -sign private.key -out data.rsa data.der

それと同じくらい簡単ですが、ウェブ上で見つけるのは非常に困難でした

于 2012-07-25T17:27:29.503 に答える