API sha1哈希生成不匹配

时间:2014-02-03 12:02:49

标签: ruby-on-rails ruby api hash sha1

我是从Slideshare API资源管理器获取的,它正在运行:

64f43b4be73bc11a15142c1ef5dab1130c5064cb

从SHA1哈希下面的字符串

81LqkNkvy1391428643

但是当我在Rails中使用时:

Digest::SHA1.hexdigest("81LqkNkvy1391428643")

我明白了:

1ef520bb53227b9edf691d47da653f93d232e16e

我无法弄清楚为什么这不匹配。

根据Slideshare API链接

http://www.slideshare.net/developers/documentation

它清楚地说

hash: Set this to the SHA1 hash of the concatenation of the shared secret and the 
timestamp (ts). i.e. SHA1 (sharedsecret + timestamp). The order of the terms 
in the concatenation is important.

我以为我正确地遵循了说明。我也试过解密上面的SHA1字符串但到目前为止没有运气。

这可能是什么问题?

2 个答案:

答案 0 :(得分:1)

来自API资源管理器的网址参数,共享密钥设置为81LqkNkvy

...&hash=80c887e839d79dc38248ed4cda4b6ad401f57305&ts=1391434954

在Ruby中:

sharedsecret = '81LqkNkvy'
timestamp = 1391434954

require 'digest'
Digest::SHA1.hexdigest(sharedsecret + timestamp.to_s)
#=> "80c887e839d79dc38248ed4cda4b6ad401f57305"

获取当前时间戳:

timestamp = Time.now.to_i
#=> 1391434369

请注意,哈希每秒都会更改。

答案 1 :(得分:0)

以毫秒为单位尝试时间戳?