1
chatfeed 2018-12-18 14:25:51 +08:00
函数大概用到 random_bytes ,date,bin2hex,hash_hmac,base64_encode
|
2
Citrullus 2018-12-18 16:53:19 +08:00
虽然从未接触过 Ruby (手动狗头),但是从这段代码上看,这是一个生成签名的片段吧!获取字符串和当前时间等通过 sha1 生成签名再 base64
|
3
lihongjie0209 2018-12-18 17:59:52 +08:00
有什么看不懂的吗?
|
4
TimLang 2018-12-18 18:01:26 +08:00
感觉像微信签名呀。。
|
5
2pang 2018-12-18 18:32:02 +08:00 via Android
虽然不会 ruby 但这个代码写的这么通俗 一眼就能看出是做什么的吧
|
6
ccnccy OP @lihongjie0209
@2pang @chatfeed 改成下面这样,一直错误,提示 Parse error: syntax error, unexpected '$payload' (T_VARIABLE) $path = "/orders?status=live"; $nonce = md5(time() . mt_rand(0,1000)); $dt = new DateTime('UTC'); $date = $dt->format('D, d M Y H:i:s \G\M\T'); $api_secret1 = 'xxxx' $payload = ["#{$path}","#{$date}","#{$nonce}"]; $signature = hash_hmac("SHA1", $payload,$api_secret1, true); $signature_encoded = $this->base64url_encode($signature); |
7
2pang 2018-12-18 19:27:54 +08:00 via Android 1
Parse error: syntax error, unexpected '$payload' (T_VARIABLE)
不是写的很清楚么? 上一行没写分号 |
8
linxu 2018-12-18 19:28:10 +08:00 via Android 1
分号少了一个。$api_secret1 = 'xxxx';
|
9
ccnccy OP 感谢楼上 2 位,我再测试测试。
|
10
peterxu 2018-12-19 10:47:29 +08:00 1
上面 ruby 的代码运行结果如下
``` 2.4.1 :003 > require 'securerandom' => true 2.4.1 :004 > nonce = SecureRandom.hex => "5b6097c4519fb22eb0ae399f0678bd05" 2.4.1 :005 > require 'time' => true 2.4.1 :006 > date = Time.now.httpdate => "Wed, 19 Dec 2018 02:39:32 GMT" 2.4.1 :007 > path = "path" => "path" 2.4.1 :008 > canonical_string = "application/json,,#{path},#{date},#{nonce}" => "application/json,,path,Wed, 19 Dec 2018 02:39:32 GMT,5b6097c4519fb22eb0ae399f0678bd05" 2.4.1 :009 > require "base64" => false 2.4.1 :010 > user_secret = "user_secret" => "user_secret" 2.4.1 :011 > signature = Base64.strict_encode64(OpenSSL::HMAC.digest(OpenSSL::Digest.new('sha1'), user_secret, canonical_string)) => "iGwkpjulP43xZqK/h8JBjL9L9ro=" ``` 为了能跑通,我把 path 和 user_secret 分别给了个值 path = "path" user_secret = "user_secret" 代码的意思就是 1、获取一个随机数 2,获取当前时间的一个 date 格式 3、拼成一个指定字符串 4,先使用 sha 算法,再使用 base64 编码 |
11
peterxu 2018-12-19 10:48:31 +08:00
v2ex 不支持 markdown 模式?
|
12
ccnccy OP 楼上的辛苦了! ruby 真漂亮。
|