logo司马阅 OPENAPI

⌘ K
  • 司马阅官网
  • 教程
  • 关于我们
  • 接入教程
    • 开始接入
  • 基础能力
    • 基础配置
    • 获取token
    • 签名
  • 如何使用
    • 文档解析
    • 智能文档
      • 智能文档上传解析
      • 智能文档问答
应用场景
签名使用方法
Java
Python
PHP

签名

最后更新时间:
获取token文档解析
Made with❤by
司马阅

在调用接口时会在 header 里传入"sign:<<sign>>"签名,以便通过服务器检测

应用场景

  • 调用接口时会使用签名

签名使用方法

参数说明参考
signKey申请的appkey
content请求API所传的参数

Java

public String sign(String signKey, Map<String, Object> content) {
Set<String> keySet = content.keySet();
String[] keyData = keySet.toArray(new String[]{});
StringBuilder signResult = new StringBuilder(signKey);
Arrays.sort(keyData);
for (String key : keyData) {
if (!(content.get(key) instanceof String)) {
continue;
}
if (Objects.equals(key, "sign")) {
continue;
}
if (Objects.equals(key, "file")) {
continue;
}
signResult.append(key);
signResult.append(content.get(key));
}
String waitSign = signResult.toString();
return SecureUtil.sha1(waitSign);
}

Python

def get_sign(sign_key: str, data: dict):
list_data = list(data.keys())
string_sign = sign_key
sort_list = sorted(list_data)
for item in sort_list:
res_value = data[item]
if not isinstance(res_value, str):
continue
if item == "sign":
continue
if item == "file":
continue
string_sign += str(item)
string_sign += str(res_value)
sign = hashlib.sha1(string_sign.encode("utf-8")).hexdigest()
return sign

PHP

function get_sign($sign_key, $data) {
$list_data = array_keys($data);
$string_sign = $sign_key;
sort($list_data);
foreach ($list_data as $item) {
$res_value = $data[$item];
if (!is_string($res_value)) {
continue;
}
if ($item == "sign") {
continue;
}
if ($item == "file") {
continue;
}
$string_sign .= $item;
$string_sign .= $res_value;
}
$sign = sha1($string_sign);
return $sign;
}