火幣網API文檔——REST API 簽名認證


安全認證

  目前關於apikey申請和修改,請在“賬戶 - API管理”頁面進行相關操作。其中AccessKey為API 訪問密鑰,SecretKey為用戶對請求進行簽名的密鑰(僅申請時可見)。Pro站和HADAX站apikey通用。  

  • 重要提示:這兩個密鑰與賬號安全緊密相關,無論何時都請勿向其它人透露。

 

合法請求結構

  基於安全考慮,除行情API 外的 API 請求都必須進行簽名運算。一個合法的請求由以下幾部分組成:

  • 方法請求地址 即訪問服務器地址:api.huobi.pro或者api.hadax.com后面跟上方法名,比如api.huobi.pro/v1/order/orders。

  • API 訪問密鑰(AccessKeyId) 您申請的 APIKEY 中的AccessKey。

  • 簽名方法(SignatureMethod) 用戶計算簽名的基於哈希的協議,此處使用 HmacSHA256。

  • 簽名版本(SignatureVersion) 簽名協議的版本,此處使用2。

  • 時間戳(Timestamp) 您發出請求的時間 (UTC 時區) (UTC 時區) (UTC 時區) 。在查詢請求中包含此值有助於防止第三方截取您的請求。如:2017-05-11T16:22:06。再次強調是 (UTC 時區) 。

  • 必選和可選參數 每個方法都有一組用於定義 API 調用的必需參數和可選參數。可以在每個方法的說明中查看這些參數及其含義。 請一定注意:對於GET請求,每個方法自帶的參數都需要進行簽名運算; 對於POST請求,每個方法自帶的參數不進行簽名認證,即POST請求中需要進行簽名運算的只有AccessKeyId、SignatureMethod、SignatureVersion、Timestamp四個參數,其它參數放在body中。

  • 簽名 簽名計算得出的值,用於確保簽名有效和未被篡改。

例:

https://api.huobi.pro/v1/order/orders?
AccessKeyId=e2xxxxxx-99xxxxxx-84xxxxxx-7xxxx
&SignatureMethod=HmacSHA256
&SignatureVersion=2
&Timestamp=2017-05-11T15%3A19%3A30
&order-id=1234567890
&Signature=calculated value

 

簽名運算

  API 請求在通過 Internet 發送的過程中極有可能被篡改。為了確保請求未被更改,我們會要求用戶在每個請求中帶上簽名(行情 API 除外),來校驗參數或參數值在傳輸途中是否發生了更改。

計算簽名所需的步驟:

  1. 規范要計算簽名的請求

    因為使用 HMAC 進行簽名計算時,使用不同內容計算得到的結果會完全不同。所以在進行簽名計算前,請先對請求進行規范化處理。下面以查詢某訂單詳情請求為例進行說明

https://api.huobi.pro/v1/order/orders?
AccessKeyId=e2xxxxxx-99xxxxxx-84xxxxxx-7xxxx
&SignatureMethod=HmacSHA256
&SignatureVersion=2
&Timestamp=2017-05-11T15:19:30
&order-id=1234567890
  1. 請求方法(GET 或 POST),后面添加換行符\n。
GET\n
  1. 添加小寫的訪問地址,后面添加換行符\n。
api.huobi.pro\n
  1. 訪問方法的路徑,后面添加換行符\n。
/v1/order/orders\n
  1. 按照ASCII碼的順序對參數名進行排序(使用 UTF-8 編碼,且進行了 URI 編碼,十六進制字符必須大寫,如‘:’會被編碼為'%3A',空格被編碼為'%20')。

例如,下面是請求參數的原始順序,進行過編碼后。

AccessKeyId=e2xxxxxx-99xxxxxx-84xxxxxx-7xxxx
order-id=1234567890
SignatureMethod=HmacSHA256
SignatureVersion=2
Timestamp=2017-05-11T15%3A19%3A30

 

這些參數會被排序為:

AccessKeyId=e2xxxxxx-99xxxxxx-84xxxxxx-7xxxx
SignatureMethod=HmacSHA256
SignatureVersion=2
Timestamp=2017-05-11T15%3A19%3A30
order-id=1234567890

 

按照以上順序,將各參數使用字符’&’連接。

AccessKeyId=e2xxxxxx-99xxxxxx-84xxxxxx-7xxxx&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2017-05-11T15%3A19%3A30&order-id=1234567890

 

組成最終的要進行簽名計算的字符串如下:

GET\n
api.huobi.pro\n
/v1/order/orders\n
AccessKeyId=e2xxxxxx-99xxxxxx-84xxxxxx-7xxxx&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2017-05-11T15%3A19%3A30&order-id=1234567890

 

  1. 計算簽名,將以下兩個參數傳入加密哈希函數:
  • 要進行簽名計算的字符串
GET\n
api.huobi.pro\n
/v1/order/orders\n
AccessKeyId=e2xxxxxx-99xxxxxx-84xxxxxx-7xxxx&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2017-05-11T15%3A19%3A30&order-id=1234567890

 

  • 進行簽名的密鑰(SecretKey)
b0xxxxxx-c6xxxxxx-94xxxxxx-dxxxx

 

得到簽名計算結果並進行 Base64編碼

4F65x5A2bLyMWVQj3Aqp+B4w+ivaA7n5Oi2SuYtCJ9o=

 

  1. 將上述值作為參數Signature的取值添加到 API 請求中。 將此參數添加到請求時,必須將該值進行 URI 編碼。

  2. 最終,發送到服務器的 API 請求應該為:

https://api.huobi.pro/v1/order/orders?AccessKeyId=e2xxxxxx-99xxxxxx-84xxxxxx-7xxxx&order-id=1234567890&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2017-05-11T15%3A19%3A30&Signature=4F65x5A2bLyMWVQj3Aqp%2BB4w%2BivaA7n5Oi2SuYtCJ9o%3D

 

 

 

 

                                   


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM