【发布时间】:2013-12-03 05:33:56
【问题描述】:
也许是一个完全愚蠢的问题,但我无法解决......
首先,我需要使用我的部分提交标记生成一个 SHA-1 哈希。哈希正确,输出为;
0623f7917a1e2e09e7bcc700482392fba620e6a2
接下来,我需要将此哈希编码为 28 个字符的字符串。这是我在运行代码(或使用在线生成器)时遇到困难的地方,我得到了 56 个字符的字符串。我得到的刺痛是;
MDYyM2Y3OTE3YTFlMmUwOWU3YmNjNzAwNDgyMzkyZmJhNjIwZTZhMg==
问题是 1) 是否可以从上面的哈希中获取 28 个字符的字符串?和 2) 怎么……我哪里出错了。
感谢您提供的任何帮助。
【问题讨论】:
-
你到底需要 28 个字符的字符串做什么?如果您不介意计算相同的一些哈希,您可以只取一个子字符串。但如果你需要一个完全唯一的哈希,你就必须找到另一种方法。
-
1) 可能。你的目标是什么语言? 2) 十六进制值被编码为文本 (
"062..."==0x30, 0x36, 0x32, ...) 而不是它所代表的大数字。 -
@Jonathan - 我被你的评论难住了。您能否详细说明您是如何得出“MDY”是 062 的字符串表示的结论的?我完全错过了它:/
-
@SteveK
MDYy...是字符串"0623..."下的代码点序列 - 48、54、50、51 等 - 以 base-64 表示。虽然0623...是十六进制,但它存储为字符串("0"–"9"和"a"–"f")。要从 base-16 转换为 base-64,必须首先将字符串解析为数字序列 - 0x6、0x23、0xf7 等。