SHA1带有非标准字符

时间:2016-04-20 14:36:07

标签: hash payment sha1

我正在实施在线支付系统:Paybox。

我有一个自动回复(服务器之间)和回复(当他回到我的网站时附加到我的客户。

一切都很好,除了签名是SHA1。 在自动回复方面,我有一个有效的标志:

ahkjqBWxsi2rMXWpQr9LaQFelTIGJ93pKfGt2E6lT1sIKABsNanexC0gZvt5Z8ShgQXUsGBS10QVPzUxmYDhWpuDKIiHDZ5i9mLm2UGz8LOJeGkIlikuXOCC3ny

但是,对于客户(我参加此测试),我有:

ah8R%2F2mvvpc8Jo016XyO7WZbqmQktb%2BShME6A0X3hwCNWkkGXb1YI9wIS7RSCK1IJKotbYni8BxBNoHTKcLxdA9nOQPcQSD%2FUM3%2BdiptrnTuLZ1jP9bIDCvDtSav7WG509gw5PbEztpl5lOZlnIFuCMzC3Ps%2B2Rt%2FO6PSZfHgvA%3D

我不明白:

1)为什么他们不同。

2)为什么第二个字符不能从SHA1

输出'%'字符

我想到了不同的编码但到目前为止没有任何想法?

由于

1 个答案:

答案 0 :(得分:0)

%2F%2B是URL编码字符; <{1}}和/

您可能会看到它们,因为它们可以出现在Base64编码的字符串中,这就是您所看到的内容(尽管在第一个示例中它们不存在),因为您无法将原始SHA1哈希表示为字符串。

在许多情况下,您无法使用HTTP以原始形式发送包含这些字符的字符串,因为它们具有特殊含义,请参阅Passing base64 encoded strings in URL

假设编码/解码和SHA1代码正常运行,那么两个哈希值不同的原因是因为输入数据不同。