【问题标题】:sha1hash not working, Error in hash.sha1hash 不工作,哈希错误。
【发布时间】: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 链接:

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

【问题讨论】:

  • 使用digest(hash.string,"sha1",serialize=FALSE),但我希望你有一个真实的caller.ID,因为我怀疑它不会起作用......
  • 解决了!谢谢!
  • 请创建一个答案,我会将其标记为正确。

标签: r hash


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2018-10-13
    • 2019-07-22
    • 2020-05-21
    • 2017-11-13
    • 2011-07-16
    • 2011-02-07
    • 2018-01-18
    • 2012-04-15
    • 2015-08-12
    相关资源
    最近更新 更多