我正在使用Base64.encode64从API请求(我没有开发的API)中使用的HMAC创建哈希.生成的哈希有时包括"+".包含"+"的请求失败.请求没有成功.
例如,Python中的相同类型的脚本在Base64编码的哈希中从不会有"+".
以下是两个片段.同样,Python从来没有"+",Ruby有时会这样做.
有什么想法发生了什么?如何保持Ruby的base64编码不使用"+"字符?
红宝石:
hmac = OpenSSL::HMAC.digest('sha256', hmackey, request_string) signature = URI::encode(Base64.encode64(hmac))
蟒蛇:
hmac = hmac.new(self.hmackey, urltosign, digestmod=hashlib.sha256).digest() signature = base64.b64encode(hmac)
Sabuj Hassan.. 7
Python使用RFC 3548进行base64转换.其他语言如Ruby,Java(可能是RFC 2045),他们可能会使用不同的RFC进行转换.因此,您可能会发现很少有人正在使用/
,很少有人使用+
他们的编码字符串
因此,如果您需要与它们匹配,只需在编码后替换等效的字符.