Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么我的Base64编码哈希只包含28个字符?_C#_Base64_Encode_Sha - Fatal编程技术网

C# 为什么我的Base64编码哈希只包含28个字符?

C# 为什么我的Base64编码哈希只包含28个字符?,c#,base64,encode,sha,C#,Base64,Encode,Sha,没有回答,也没有我不理解的评论 我正在尝试为API的伪OAuth身份验证头创建Base64编码的签名。我发现支持文档需要经过身份验证的访问权限,可以引导您完成创建签名的过程。我能够创建相同的数据,直到最后一步,即对哈希进行Base64编码 支持文件规定HMAC-SHA1签名为: cb5acd2d3ef689a8fbec4d06c576371834689673 我得到: CB5ACD2D3EF689A8FBEC4D06C576371834689673 然后,支持文件指出: 从步骤3中的十六进制

没有回答,也没有我不理解的评论

我正在尝试为API的伪OAuth身份验证头创建Base64编码的签名。我发现支持文档需要经过身份验证的访问权限,可以引导您完成创建签名的过程。我能够创建相同的数据,直到最后一步,即对哈希进行Base64编码

支持文件规定HMAC-SHA1签名为:

cb5acd2d3ef689a8fbec4d06c576371834689673
我得到:

CB5ACD2D3EF689A8FBEC4D06C576371834689673
然后,支持文件指出:

从步骤3中的十六进制结果字符串中,使用Base64对值进行编码

并提供以下Base64编码结果58个字符:

Y2I1YWNkMmQzZWY2ODlhOGZiZWM0ZDA2YzU3NjM3MTgzNDY4OTY3Mw==
y1rNLT72iaj77E0GxXY3GDRolnM=
当我使用Convert.ToBase64String转换我的签名时,我得到28个字符:

Y2I1YWNkMmQzZWY2ODlhOGZiZWM0ZDA2YzU3NjM3MTgzNDY4OTY3Mw==
y1rNLT72iaj77E0GxXY3GDRolnM=
我被难住了,我不知道支持文件是否不正确,或者我是否做错了什么。我正在生成一个28个字符的字符串,而示例是56个字符,这一事实非常有趣,不容忽视

报纸上的评论也让我感到困惑。我看不出字符串MDY如何翻译成任何对我有意义的ascii或unicode数字——我不明白注释作者是如何得出这个结论的

十六进制值被编码为文本062…==0x30、0x36、0x32, ... 而不是它所代表的庞大数字


您的签名是一个20字节160位长的字节数组。 所以这基本上是一个很长的数字

当您显示它时,您正在将其转换为十六进制字符串,因此每个字节显示为2个字符,因此您得到一个40个字符长的字符串

Base64编码每3个字节的有效负载提供4个字符进行编码

如果用base64编码20字节的二进制数据,则得到26.6字节,四舍五入为28,则每4个字节四舍五入一次。 如果将40个字符长的字符串编码为320位,则得到53,3个字符,再次四舍五入为56


我想你是在做后者,编码一个字符串而不是一个字节[]。

我在这里遇到了同样的问题。您必须将sha1sum结果转换为十六进制格式。例如,当sha1sum结果为dfe5ec35f9c9f144d3814821a558bcfa23ab1a58时,控制台以字符串格式输出

您可以使用UltraEdit或其他文本编辑器,将其编辑为十六进制

然后将其另存为文件。 正确答案3+XsNfnJ8UTTgUghpVi8+iOrGlg=在对文件进行base64编码后出现


试试看。希望有帮助。

较长的base64字符串是字符串cb5acd2的base64编码。。。虽然较短的是字节数组新字节[]{0xcb,0x5a,0xcd的base64编码……没错,但我当时没有足够的声誉对A Chiesa先生的回答发表评论~~