[解決済み] SHA1withRSA "の詳細は?
質問内容
当初、quot;SHA1withRSA algorithm"は、単にプレーンテキストをquot;SHA1"で演算し、RSA/pkcs1paddingでquot;SHA1"の結果を暗号化したものだと思っていましたが、javaコードを書いて試してみると違っていることがわかりました。 私はRSA公開鍵を使って署名を復号し、対応する秘密鍵を使って"SHA1withRSA algorithm"で署名しています。しかし、私は結果が "SHA1(plainText)" と等しくないことを発見した、以下は私のJavaコードである。
String plaintext= "123456";
Signature signature=Signature.getInstance("SHA1withRSA",new BouncyCastleProvider());
signature.initSign(pemPrivatekey);
signature.update(plaintext.getBytes());
byte[] sign = signature.sign();
//RSA decode
byte[] bytes = RsaCipher.decryptByRsa(sign, pemPublickey);
String rsaDecodeHex=Hex.toHexString(bytes);
System.out.println(rsaDecodeHex.toLowerCase());
String sha1Hex = Hash.getSha1(plaintext.getBytes());
System.out.println(sha1Hex);
//rsaDecodeHex!=sha1Hex
を簡単に見つけることができます。
rsaDecodeHex!=sha1Hex
を、ここで
rsaDecodeHex=3021300906052b0e03021a050004147c4a8d09ca3762af61e59520943dc26494f8941b
そして
sha1Hex=7c4a8d09ca3762af61e59520943dc26494f8941b 。
で、quot;SHA1withRSA"の詳細は?
どのように解決するのか?
PCKS#1 v15で定義されている電子署名アルゴリズムは、ダイジェストアルゴリズムの識別子とASN.1でエンコードされたメッセージのダイジェストに対してRSA暗号化を行います。
signature =
RSA_Encryption(
ASN.1(DigestAlgorithmIdentifier + SHA1(message) ))
参照( RFC2313 )
10.1 署名プロセス
署名のプロセスは、メッセージのダイジェスト化、データ エンコーディング、RSA 暗号化、およびオクテット文字列からビット文字列への変換を行う。 署名プロセスへの入力は、オクテット文字列Mである。 メッセージ、および署名者の秘密鍵が必要である。署名の出力 は、署名であるビット列Sとする。
では、あなたの
rsaDecodeHex
のアルゴリズム識別子とSHA1ダイジェストが含まれています。
plainText
関連
-
[解決済み] java.sql.SQLException: ユーザー 'root'@'localhost' (using password: YES) のためのアクセスが拒否されました。
-
[解決済み】ResultSetの例外 - 結果セットの開始前
-
[解決済み] メソッドがそのスーパークラスのメソッドをオーバーライドしない
-
[解決済み] [Solved] java.lang.NoClassDefFoundError: クラスXXXを初期化できませんでした。
-
[解決済み】どういう意味か。Serializableクラスがstatic final serialVersionUIDフィールドを宣言していないとは?重複している] [重複している] [重複している] [重複している
-
[解決済み】Eclipseで「パッケージエクスプローラー」ビューが見つからない
-
[解決済み] SQLエラー。0, SQLState: 08S01 通信リンクの失敗 [重複]。
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] Java の配列を表示する最も簡単な方法は何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】代入の左手は必ず変数 CharAt
-
[解決済み】Eclipseがエラーメッセージ "Java was started but returned exit code = 1" を返す
-
[解決済み】keytoolエラー 鍵屋が改ざんされたか、パスワードが不正確だった場合
-
[解決済み】java.io.IOException: 壊れたパイプ
-
[解決済み】Javaを包含するクラスではないのか?
-
[解決済み】破損したjarファイル
-
[解決済み] StringBuilderをクリアまたは空にするにはどうすればよいですか?重複] [重複] [重複] [重複] [重複] [重複
-
[解決済み] JavaでSSLピアが正しくシャットダウンされない
-
[解決済み】Java: GZIPInputStreamの作成に失敗しました。GZIP形式ではありません
-
[解決済み] "java.nio.charset.MalformedInputException" を避けるために、すべての包括的なCharset。入力の長さ= 1"?