0

Java で SHA1 With RSA 署名を検証しようとしています。私のコードは実際にはこれです:

String plainText = "myString";
String signature_b64_encoded = "bOBrJmPGJ6eqDpk7sZMJZ0QujErTVz/boe44ANTLbeHd1Pm56UBH3uUCdH4sDZcDczIW5E6Q0o2dq/4lpjTAOzu3FjaLMAZ1sSTn8Ds8XxQnOnmhapbrd/6sNSr9fC57c7BlgAy7GZbCZGUQC/b/UETb8cIR0B1Dqk41RDorm+NdwDEVCTl4q9I7D70/Kau/aGpUvJ3ULgzM3/JnxHpaWmG7xAsXH9MyxVSxi/ZpJ0WuyuaAiSmiDN946O/ElIxRqnaEtFuSIDinUYz4yAWtoLdssDO5SqMFb8EskUdfExs1IcGtYRaIbz3ASTFdVQoou7HI4pxVn1Sh4Y4mrxa7Ag==";
Signature instance = Signature.getInstance("SHA1WithRSA");
PublicKey pkey = cert.getPublicKey(); // gets my Public Key
instance.initVerify(pkey);
instance.update(plainText.getBytes());
Boolean blnResult = instance.verify(Base64.decode(strSignature.getBytes("UTF-8"), Base64.DEFAULT));

問題は、検証された署名が一部の場合にのみ偽であり、他の場合には真であるということです。この結果のランダム性の原因を理解できません。

  • 確認しようとしている文字列は .NET 環境で署名されています
  • .NET で行われる署名の検証は、plainText ではなく、plainText のハッシュに対して行われます。

質問1

JavaでplainText自体の代わりにplainTextのハッシュを検証する手段はありますか(.NETで可能です)? これにより、検証プロセスの開始時に同じ入力を確実に行うことができます。

質問2

Java で RSA 署名を使用して SHA1 を検証する別の方法はありますか?

4

0 に答える 0