2015-07-19 64 views
1

我都是新來的哈希和加密。我想要做的是訪問一個需要預先散列一些變量的API,現在我的散列不能正確輸出。sha1hash不工作,散列錯誤。

散列是要在以下格式:

散列是sha1hash SHA1(來電顯示+時間+鍵+獨特),爲40 - 炭十六進制,例如「6b76a4ede12897d42dabc2a5f9270bbdb76985af」 ,其中關鍵是您分配的私鑰。

我假定文本中的「+」符號假定連接在一起。儘管如此,按照說明和使用摘要軟件包,我的散列有些問題,儘管所有變量的長度都與指令相匹配。哈希錯誤通過使用: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

使用'消化(hash.string,「SHA-1」,連載= FALSE)',但我希望你有一個真正caller.ID,因爲我懷疑它會工作,否則... – digEmAll

+0

解決它!謝謝! – uncool

+0

請創建答案,我會將其標記爲正確。 – uncool

回答

1

您需要設置serialize=FALSE,否則輸入的字符串將是第一序列化,然後將哈希計算(所以你不會得到字符串的哈希...檢查結果,例如使用這個在線sha1生成器:link

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