[英]Unable to verify signature created in C#
我正在使用C#創建簽名並在Java中驗證簽名。 這總是返回false。 要求幫助我確定我在哪里做錯了。
用於創建簽名的C#代碼:
SHA256CryptoServiceProvider sha = new SHA256CryptoServiceProvider();
byte[] hash = sha.ComputeHash(Encoding.UTF8.GetBytes(data));
RSACryptoServiceProvider key = (RSACryptoServiceProvider)privateCert.PrivateKey;
RSACryptoServiceProvider signer = new RSACryptoServiceProvider();
signer.FromXmlString(key.ToXmlString(true));
byte[] signedHash = signer.SignData(hash, CryptoConfig.MapNameToOID("SHA256"));
驗證簽名的Java代碼:
Signature signature = Signature.getInstance("SHA256withRSA");
signature.initVerify(certificate);
signature.update(data);
boolean retValue= signature.verify(signedHash);
return retValue; // always returns false
謝謝拉吉
您似乎沒有使用相同的算法。 一種使用SHA256,另一種使用SHA256withRSA。
請按照以下示例嘗試MessageDigest:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.