PHP - 使用 Nonce 和时间戳创建签名(提供 JS 和 Python 等价物)
PHP - Create Signature using Nonce & Timestamp (JS & Python equivalent provided)
我正在尝试连接到 API,他们只提供 python 和 Javascript 的指南。
我试图找到 php 的等价物,但没找到。
额外参考:https://docs.deribit.com/#authentication
我无法在 PHP 中获得正确的签名。
Javascript:
var timestamp = Date.now();
var nonce = "abcd";
var data = "";
var signature = CryptoJS.HmacSHA256(`${timestamp}\n${nonce}\n${data}`, accessSecret).toString();
Python:
timestamp = round(datetime.now().timestamp() * 1000)
nonce = "abcd"
data = ""
signature = hmac.new(
bytes(clientSecret, "latin-1"),
msg=bytes('{}\n{}\n{}'.format(timestamp, nonce, data), "latin-1"),
digestmod=hashlib.sha256
).hexdigest().lower()
PHP:
(*我不知道如何创建随机数)
$timestamp = number_format(microtime(true) * 1000, 0, '.', '');
$nonce = number_format(microtime(true) * 1000, 0, '.', '');
$data = "";
$key = $timestamp.$nonce.$data;
$sign = hash_hmac('sha256',$key,$secret);
$sign = bin2hex($sign);
需要随机生成'a-z0-9',8个字符
您可以使用 chr
和 rand
来完成这项工作。
因此请尝试以下操作
<?php
$x1= chr(rand(0,25)+97) ;
$x2= chr(rand(0,9)+48) ;
$x3= chr(rand(0,25)+97) ;
$x4= chr(rand(0,9)+48) ;
$x5= chr(rand(0,25)+97) ;
$x6= chr(rand(0,9)+48) ;
$x7= chr(rand(0,25)+97) ;
$x8= chr(rand(0,9)+48) ;
$nonce = $x1.$x2.$x3.$x4.$x5.$x6.$x7.$x8;
?>
我正在尝试连接到 API,他们只提供 python 和 Javascript 的指南。 我试图找到 php 的等价物,但没找到。
额外参考:https://docs.deribit.com/#authentication
我无法在 PHP 中获得正确的签名。
Javascript:
var timestamp = Date.now();
var nonce = "abcd";
var data = "";
var signature = CryptoJS.HmacSHA256(`${timestamp}\n${nonce}\n${data}`, accessSecret).toString();
Python:
timestamp = round(datetime.now().timestamp() * 1000)
nonce = "abcd"
data = ""
signature = hmac.new(
bytes(clientSecret, "latin-1"),
msg=bytes('{}\n{}\n{}'.format(timestamp, nonce, data), "latin-1"),
digestmod=hashlib.sha256
).hexdigest().lower()
PHP: (*我不知道如何创建随机数)
$timestamp = number_format(microtime(true) * 1000, 0, '.', '');
$nonce = number_format(microtime(true) * 1000, 0, '.', '');
$data = "";
$key = $timestamp.$nonce.$data;
$sign = hash_hmac('sha256',$key,$secret);
$sign = bin2hex($sign);
需要随机生成'a-z0-9',8个字符
您可以使用 chr
和 rand
来完成这项工作。
因此请尝试以下操作
<?php
$x1= chr(rand(0,25)+97) ;
$x2= chr(rand(0,9)+48) ;
$x3= chr(rand(0,25)+97) ;
$x4= chr(rand(0,9)+48) ;
$x5= chr(rand(0,25)+97) ;
$x6= chr(rand(0,9)+48) ;
$x7= chr(rand(0,25)+97) ;
$x8= chr(rand(0,9)+48) ;
$nonce = $x1.$x2.$x3.$x4.$x5.$x6.$x7.$x8;
?>