[英]C# SHA256 RSA Signing. How to take a string from byte[] sign?
我必须使用一些API,该服务具有我的证书。 他们可能希望我的标志验证其服务器上的证书与该标志是否相同。 我不确定,但是。 在文档中是说明:
sign_base =
<?xml version="1.0" encoding="UTF-8"?> <ds:SignedInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
//big XML, but i can't paste it here, because of NDA i signed (with pen ;-))
</ds:Reference> </ds:SignedInfo>
rsa_sha256(sign_base) =
113c7ed1e66e1ef77c0857d418928bdf1d3bdf27b8d06c7...40d1c0a259733ad0b1b2
// its long hash so i made "..." it is 516 characters there.
base64(rsa_sha256) = ETx+0eZuHvd8CFfUGJKL3x073ye40Gx7mB0.... tCxsg==
//it is a base64 of rsa_256 hash above.
受SoF问题的启发,我尝试使用RSACryptoServiceProvider provider = new RSACryptoServiceProvider();
然后var signed = provider.SignData(sign_base, CryptoConfig.CreateFromName("SHA256"));
但是结果只给我bytes[]
。 当我将bytes[]
解码为UTF-8 string
结果不可读“ ????????? .. ???” 我可以将其与其他符号进行比较,并执行RSACryptoServiceProvider()
允许的所有工作,但我的问题是:
他们希望在请求中将此哈希作为参数发送,因此将其声明为base64字符串。 我只需要发送base64格式的消息,但是我必须首先计算它。
如何获得这个符号的字符串? 也许我的选择有误,我做错了吗? 如果您以不同于C#的语言给我帮助,也会有所帮助。
如果我很好理解并提供了正确的签名,则一旦将其作为byte[]
即可使用System.Convert.ToBase64String使用Convert.ToBase64String(byte[] data)
。 与您所做的不同,您应该能够看到类似于示例的String。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.