【发布时间】:2015-10-08 15:51:17
【问题描述】:
我对哈希和加密完全陌生。我想要做的是访问一个需要事先散列一些变量的 API,现在我的散列不知何故没有正确输出。
哈希的格式如下:
哈希是一个 sha1hash SHA1 (CallerID + Time + key + unique) 作为 40 - char 十六进制,例如“6b76a4ede12897d42dabc2a5f9270bbdb76985af” 其中 key 是您分配的私钥。
我假设文本中的“+”号假设是连接的。尽管如此,尽管所有变量的长度都与说明相匹配,但按照说明并使用摘要包,我的哈希还是有问题。哈希错误通过以下方式验证:http://www.hashkiller.co.uk/sha1-decrypter.aspx,它为我的哈希生成了一个错误,HTTP GET 查询也生成了带有哈希错误文本的 403 错误。
我的代码
library(httr)
library(digest)
library(stringi)
BooliReq <- function() {
#ID Info
key <- "PRIVATEKEY"
caller.ID <- "IDName"
#//
unix.timestamp <- as.integer( as.POSIXct(Sys.time()) )
random.string <- stri_rand_strings( n = 1, length = 16)
#Sha1-Hash: CallerID + time + key + unique, 40-char hexadecimal
hash.string <- paste0(caller.ID, unix.timestamp, key, random.string)
hash.sha1 <- digest(hash.string, "sha1")
#Create URL
url.string <- paste0("https://api.booli.se/listings?q=nacka&limit=3&offset=0&callerId=", caller.ID, "&time=" ,
unix.timestamp, "&unique=", random.string, "&hash=", hash.sha1)
GET(url.string, add_headers( Accept = "json"))
}
API 链接:
【问题讨论】:
-
使用
digest(hash.string,"sha1",serialize=FALSE),但我希望你有一个真实的caller.ID,因为我怀疑它不会起作用...... -
解决了!谢谢!
-
请创建一个答案,我会将其标记为正确。