我有几个编码的字符串,我需要解码它们,我猜他们可能是base40编码。我真的需要解码,但是在C#中进行编码也很好。顺便说一句,我已经尝试了所有标准类型的解码,然后得出结论它似乎是base40。
我找不到关于base40编码/解码的任何信息,我发现了很多关于类似base32的编码信息,当然还有base64,所以我认为应该可以做一个base40。
以下是编码字符串和正确解码值的示例。如果需要,我可以提供其他几个例子。我要解码的所有字符串都是编码的SHA1哈希值。
ENCODED
/ KUGOuoESMWYuDb + BTMK1LaGe7k =
已解决
0xFCA5063AEA0448C598B836FE05330AD4B6867BB9
更新 结果是SHA1字符串的二进制版本,然后编码为base64,这就是我解码它的原因。我可以赞扬Ignacio Vazquez-Abrams,因为他展示了一些输出显示base64,但没有解释他的答案,也没有按要求提供C#示例。因此,我更深入地了解了他的代码在什么语言中做了什么,我想出了我用C#示例发布的答案如何做到这一点。
答案 0 :(得分:3)
你所拥有的是普通的Base64,而不是Base40。
>>> '/KUGOuoESMWYuDb+BTMK1LaGe7k='.decode('base64')
'\xfc\xa5\x06:\xea\x04H\xc5\x98\xb86\xfe\x053\n\xd4\xb6\x86{\xb9'
答案 1 :(得分:3)
伊格纳西奥是对的;这是base-64:
byte[] raw = Convert.FromBase64String("/KUGOuoESMWYuDb+BTMK1LaGe7k=");
foreach(byte b in raw) Console.Write(b.ToString("x2"));
给出:
fca5063aea0448c598b836fe05330ad4b6867bb9
答案 2 :(得分:1)
好吧它是Base64但它之所以小是因为它是sha1的二进制版本,所以提供的唯一答案并没有真正提供我如何做到这一点因为我要求C#代码,这里是在C#中实现它的一种方法:
string encoded = "/KUGOuoESMWYuDb+BTMK1LaGe7k=";
StringBuilder builder = new StringBuilder();
foreach (var b in Convert.FromBase64String(encoded))
builder.Append(string.Format("{0:X}", b));
Console.Out.WriteLine(builder.ToString());