"SHA1withRSA"
Android で Bouncy Castle を使用した署名に問題があります。Bouncy Castle 署名値が .NET 署名値と一致しません。
のような多くのアルゴリズムを使用しようとしましたが"SHA1withRSA"
、満足のいく結果は得られませんでした。"SHA1withRSAAndMGF1"
"SHA1withRSA/ISO9796-2"
同じメッセージ、同じアルゴリズム、同じ秘密鍵を使用した場合、結果は .NET と Bouncy Castle で同じでなければなりません... そうではありませんか? 私のコードで何が間違っていますか???
秘密鍵の取得:
...
ks = KeyStore.getInstance("PKCS12");
...
key = ks.getKey(alias, senha.toCharArray());
if (key instanceof PrivateKey) {
privateKey = (PrivateKey) key;
}
署名方法:
public String signer(String txt, String alg) throws Exception {
Signature signer = Signature.getInstance(alg, new BouncyCastleProvider());
signer.initSign(privateKey);
signer.update(txt.getBytes("UTF-8"));
return Base64.encodeToString(signer.sign(), Base64.NO_WRAP);
}
私のアプリは XMLDSIG プロトコルを使用して XML を政府の Web サービスに送信する必要があります。