我正在尝试哈希,以便我可以对google api进行身份验证。
如果我运行base64.urlsafe_b64decode(client_secret)?
,其中client_secret是我的密钥,然后在摘要中使用它:hmac,一切正常。
但是,我找不到b64decode? p>
关于以下评论:
我承认我有点像初学者,但这是一个例子。请注意,我在这里制作了secret_key,显然我无法公开分享真实的密钥。
在Python中:
base64.urlsafe_b64decode("49ugdj9v_3290k3r902qkf9=")
Out[35]: '\xe3\xdb\xa0v?o\xff}\xbd\xd2M\xeb\xf7M\xaa\x91\xff'
注意:上面的结果正是我想要的字符串。
在R:
RCurl::base64("49ugdj9v_3290k3r902qkf9=", encode = FALSE)
[1] "\xe3۠v?o\003}\xbd\xd2M\xeb\xf7M\xaa\x91\xff"
请注意结果不一样。另外,我尝试过:
> URLencode(RCurl::base64("49ugdj9v_3290k3r902qkf9=", encode = FALSE))
[1] "NA"
Warning message:
In strsplit(URL, "") : input string 1 is invalid in this locale
如果我在R中尝试不同的base64编码器,我会得到同样的结果:
rawToChar(base64decode("49ugdj9v_3290k3r902qkf9="))
[1] "\xe3۠v?o\xdfot\x93z\xfd\xd3j\xa4\177"
无论如何,我希望这有助于解释我的麻烦。如果有人有解决方案,那将非常感激。
答案 0 :(得分:3)
当你做一个" url-safe"编码,您将/
转换为_
,将+
转换为-
。因此,为了正确解码这些值,您需要首先撤消这些翻译。
urlsafebase64becode <- function(x, ...) {
RCurl::base64(gsub("_","/", gsub("-","+",x,fixed=TRUE),fixed=TRUE), encode=FALSE, ...)
}
urlsafebase64becode("49ugdj9v_3290k3r902qkf=")
urlsafebase64becode("49ugdj9v_3290k3r902qkf=", mode="raw")
# [1] e3 db a0 76 3f 6f ff 7d bd d2 4d eb f7 4d
似乎与Python匹配
' '.join(x.encode('hex') for x in base64.urlsafe_b64decode("49ugdj9v_3290k3r902qkf9="))
'e3 db a0 76 3f 6f ff 7d bd d2 4d eb f7 4d aa 91 ff'