簡體   English   中英

無法驗證在C#中創建的簽名

[英]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:

http://www.mkyong.com/java/java-sha-hashing-example/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM