繁体   English   中英

C#SHA256 RSA签名。 如何从byte []符号中提取字符串?

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM