gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:06:00 25 4
gpt4 key购买 nike

我必须使用一些 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[],你应该能够使用 Convert.ToBase64String(byte[] data) 使用 System.Convert.ToBase64String .与您所做的不同,您应该能够看到一个类似于示例的字符串。

关于C# SHA256 RSA 签名。如何从 byte[] 符号中取出一个字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57689278/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com