1
我使用Base64.encode64在API請求(我沒有開發的API)中使用HMAC創建哈希。生成的散列有時候包含「+」。包含「+」的請求失敗。請求沒有成功。在Base64.encode64輸出中加號?
例如,Python中的同一種腳本從未在Base64編碼哈希中具有「+」。
下面是兩個片段。同樣,Python從來沒有「+」,Ruby有時會這樣做。
任何想法是怎麼回事?我怎樣才能保持Ruby的base64編碼不使用「+」字符?
紅寶石:
hmac = OpenSSL::HMAC.digest('sha256', hmackey, request_string)
signature = URI::encode(Base64.encode64(hmac))
的Python:
hmac = hmac.new(self.hmackey, urltosign, digestmod=hashlib.sha256).digest()
signature = base64.b64encode(hmac)
+是base64中的有效字符。這些是否相同?我沒有在python中看到相當於你的'URI :: encode'的步驟,它也會將所有的空格都改爲+(base64之後的) – Joe