我正在验证数字签名。当我尝试使用时SignedCms.Decode()
,它导致System.Security.Cryptography.CryptographicException
{"ASN1 bad tag value
met.\r\n"}
我在 Java 中生成签名数据,并尝试在 C# 中验证它。
这是用于验证签名的 C# 代码。
//base64 signature data
string encodedMessage_b64 = "ahXwmjFNUVxxxxxx==";
byte[] encodedMessage = Convert.FromBase64String(encodedMessage_b64);
SignedCms signedCms = new SignedCms();
//throw exception
signedCms.Decode(encodedMessage);
这是用于生成签名的 Java 代码。
Signature rsaSig = Signature.getInstance("SHA1withRSA");
//privateKey from keytore
rsaSig.initSign(priKey);
rsaSig.update(data.getBytes());
//org.apache.commons.codec.binary.Base64;
String signedData = Base64.encodeBase64String(rsaSig.sign());
问题是carriage return
,line feed
我不知道它们来自哪里。
任何建议将不胜感激 :)