生成身份验证字符串(REST API)

最近更新 2026年10月7日

部分REST接口端点支持执行敏感操作,例如下单或申请数字资产提款。此类私有接口端点仅支持通过加密请求调用,且每次请求须包含身份验证字符串(authent)。authent由以下输入计算得出:

PostData

postData是以"&"连接的字符串,格式为=,每个REST接口端点各有不同。

示例

如需调用订单簿接口端点,请选择参数symbol,其值为
fi_xbtusd_180615. postData is then given by symbol=fi_xbtusd_180615.

v3接口端点身份验证流程更新:自2024年2月20日起,为遵循行业最佳实践、提升安全标准,我们将更新/derivatives/*(v3)接口端点的身份验证流程。(详见下文)

PostData生成方式变更:


- 更新前:生成Authent时,客户须在URL编码前对查询字符串参数进行哈希处理,例如:`greeting=hello world`。


- 更新后:身份验证流程将改为对请求中完整的URL编码URI组件进行哈希处理,例如:`greeting=hello%20world`。此方式可增强安全性,符合行业最佳实践。
本次更新与v3 batchorder接口端点尤为相关,该端点在查询参数中接受JSON格式的请求体。


向下兼容性与后续计划:


目前,本次变更与旧版本向下兼容,平台将同时接受上述两种PostData生成方式。但为维持更高安全标准,我们计划在未来停止支持旧方式(即对已解码的查询字符串参数进行哈希处理)。届时我们将提前充分告知,并强烈建议所有客户尽快迁移至新方式,以确保服务不受影响。

随机数

随机数(nonce)是一个持续递增的整数参数。建议使用系统当前时间的毫秒数(字符串格式)作为随机数。系统可在短时间内容忍
乱序的随机数。随机数非必填项。

示例 1415957147987

大多数身份验证问题与随机数不正确有关。重新生成一组API密钥即可自动重置随机数,解决此类问题。

接口端点路径

endpointPath为接口端点的URL路径扩展。

示例 /api/v3/orderbook

API机密

api_secret的获取方式详见上一节说明。

示例

rttp4AzwRfYEdQ7R7X8Z/04Y4TZPa97pqCypi3xXxAqftygftnI6H9yGV+O
cUOOJeFtZkr8mVwbAndU3Kz4Q+eG

根据上述输入,authent的计算步骤如下:

  1. 1

    拼接

    postData

    +

    随机数

    +

    endpointPath

  2. 2

    使用SHA-256算法对步骤1的结果进行哈希处理

  3. 3

    对api_secret进行Base64解码

  4. 4

    使用步骤3的结果,通过HMAC-SHA-512算法对步骤2的结果进行哈希处理

  5. 5

    Base64编码第4步的结果

示例

以下为authent在Java中的实现示例。如需查看其他编程语言的完整示例,请参阅附加资源章节。public static String getAuthent(String postData, String nonce, String endpointPath, String secretKeyBase64)
{
Mac mac512;
MessageDigest sha256;
try {
SecretKey secretKey = new SecretKeySpec 
(Base64.decode(secretKeyBase64.getBytes()), HMAC_SHA_512);
mac512 = Mac.getInstance(HMAC_SHA_512);
mac512.init(secretKey);
sha256 = MessageDigest.getInstance("SHA-256");
} catch (IOException e) {
...
} catch (InvalidKeyException e) {
...
} catch (NoSuchAlgorithmException e) {
...
} sha256.update(postData.getBytes());
sha256.update(nonce.getBytes());
sha256.update(endpointPath.getBytes());
mac512.update(sha256.digest());
return Base64.encodeBytes(mac512.doFinal()).trim();
}