如何解决无法使用 RSA-SHA512 算法使用 X509Certificate2 验证 get httpRequest 签名参数
以客户端错误“消息未签名”结束
keyId= 私钥随附的 X509 证书的 Base64 编码
算法= rsa-sha512
signature=base 64 编码的数字签名。它必须使用私钥签名,
伴随 base64 与 keyId 关联的 X509 证书
string CalcMD5HasKey = "MD5 密码哈希";
X509Certificate2 certificate = new X509Certificate2(DirectoryCERT,CalcMD5HasKey2,X509KeyStorageFlags.Exportable | X509KeyStorageFlags.MachineKeySet |
X509KeyStorageFlags.PersistKeySet);
var export = certificate.Export(X509ContentType.Pkcs12,CalcMD5HasKey2);
string BinarySecurityToken = Convert.ToBase64String(export);
string url = "";
url = "https://www.HELLO.com/ABC/webservice/v1/handshake";
string today = String.Format(@"{0:ddd,' 'dd' 'MMM' 'yyyy' 'HH':'mm':'ss' 'G\MT}",DateTime.Now);
var SignatureParm = "(request-target): get /ABC/webservice/v1/handshake\nhost:
www.HELLO.com\ndate: " + today;
UTF8Encoding ByteConverter = new UTF8Encoding();
byte[] originalData = ByteConverter.GetBytes(SignatureParm);
byte[] signedData;
RSACryptoServiceProvider privateKey = (RSACryptoServiceProvider)certificate.PrivateKey;
RSACryptoServiceProvider privateKey1 = new RSACryptoServiceProvider();
privateKey1.ImportParameters(privateKey.ExportParameters(true));
signedData = privateKey1.SignData(originalData,"SHA512");
var SignatureHash = Convert.ToBase64String(signedData);
webRequestCall.Headers.Add("Signature","keyId=\"" + BinarySecurityToken + "\",algorithm=\"rsa-
sha512\",headers=\"(request-target) host date\",signature=\"" + SignatureHash + "\"");
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。