Java BouncyCastle签名值与dotNET签名值不匹配

Java BouncyCastle签名值与dotNET签名值不匹配,java,.net,cryptography,rsa,bouncycastle,Java,.net,Cryptography,Rsa,Bouncycastle,我对Android上使用Bouncy Castle的“SHA1withRSA”签名有问题:Bouncy Castle签名值与.NET签名值不匹配 我尝试使用了许多算法,如“SHA1带RSA”,“SHA1带RSA和MGF1”或“SHA1带RSA/ISO9796-2”,但没有得到令人满意的结果 如果我使用相同的消息、相同的算法和相同的私钥,那么在.NET和Bouncy Castle中的结果必须相同。。。不是吗? 我的代码有什么问题 获取私钥: ... ks = KeyStore.getInstan

我对Android上使用Bouncy Castle的
“SHA1withRSA”
签名有问题:Bouncy Castle签名值与.NET签名值不匹配

我尝试使用了许多算法,如
“SHA1带RSA”
“SHA1带RSA和MGF1”
“SHA1带RSA/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服务

被签名的值可以有一些随机填充数据(您的签名在一侧总是相同的吗?)。您应该在一边生成签名,在另一边尝试验证

以下算法尤其如此:

"SHA1WITHRSAANDMGF1"
"SHA224WITHRSAANDMGF1"
"SHA256WITHRSAANDMGF1"
"SHA384WITHRSAANDMGF1"
"SHA512WITHRSAANDMGF1"

安装Bouncy Castle提供程序,查看是否可以使用公钥验证签名。

RSASSA-PKCS1-v1_55签名是确定性的,RSASSA-PSS签名是随机的。@owlstead您混淆了OAEP(用于加密)和PSS(用于签名)@CodesInChaos D'oh!谢谢请向我们展示(至少)在.NET代码中使用的算法,或创建包含加密算法的类的源代码。@CodesInChaos您指定的1\u 55签名:)