sha1hash不起作用,哈希错误。

时间:2015-07-19 12:05:23

标签: r hash

我对哈希和加密都很陌生。我想要做的是访问一个需要预先散列一些变量的API,现在我的哈希不知何故输出不正确。

哈希采用以下格式:

  

Hash是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链接:

  

https://translate.google.se/translate?sl=sv&tl=en&js=y&prev=_t&hl=sv&ie=UTF-8&u=https%3A%2F%2Fwww.booli.se%2Fapi%2F%23pagination&edit-text=&act=url

1 个答案:

答案 0 :(得分:1)

您需要设置serialize=FALSE,否则输入字符串将首先被序列化然后计算哈希值(因此您将无法获得字符串的哈希值...例如使用此在线sha1检查结果生成器:link

digest(hash.string, "sha1", serialize=FALSE)