保利威文档中心

幫助中心

SHA1簽名產生規則

更新時間:2024-12-13 14:06:58
  1. 取得 useridsecretkey 簽名關鍵資訊,具體請參閱取得開發金鑰secretkey金鑰用於產生簽名,作為通訊資料安全的關鍵資訊,嚴禁儲存在用戶端直接使用,所有API都必須透過客戶自己的伺服器中轉呼叫POLYV伺服器取得回應資料

  2. 採用 SHA1 簽名演算法產生簽名,具體加密計算方式如下:

  2.1 將請求所需參數(參數值非空的參數)按照參數名字典順序排列,採用 HTTP GET 請求參數連接方式(key=value&key=value&key=value)拼接參數名與參數值,例如:
date=2020-10-13&ptime=1621997347695&userid=1b448be323

  2.2 並在字串尾部加上 secretkey,以 secretKey 為 abc 為例,得到:
date=2020-10-13&ptime=1621997347695&userid=1b448be323abc

  2.3 然後計算 SHA1,將 SHA1 結果轉為大寫字母,作為 sign;

常見問題:

  1. 字串拼接時沒有將參數值為 null 的參數剔除;

  2. 簽名自用字元集必須為 UTF-8,若不指定,可能採用平台預設字元集,導致錯誤;

快速接入基礎程式碼請下載相關依賴原始碼點擊下載原始碼,下載後加入自己的原始碼工程中即可。測試案例中的 HttpUtil.java 和 VodSignUtil.java 都包含在下載檔案中。

強烈建議您使用點播 Java SDK 完成 API 的功能對接,點播 Java SDK 對 API 呼叫邏輯、異常處理、資料簽名、HTTP 請求執行緒池進行了統一封裝和最佳化。

package net.polyv.common;

import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;

import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import net.polyv.util.VodSignUtil;


/**
 * @author: thomas
 **/
public class VodSignTest {
    
    private static final Logger log = LoggerFactory.getLogger(VodSignTest.class);
    
    @Test
    public void buildSign() throws UnsupportedEncodingException, NoSuchAlgorithmException {
        String userid = "XXXXXXXX";
      
        String secretkey = "XXXXXXXXXXXXXXXXXXXXXXXX";
    
        long timestamp = System.currentTimeMillis();
        Map<String, String> paramMap = new HashMap<String, String>();
        //公共参数
        paramMap.put("userid", userid);
        paramMap.put("ptime", Long.toString(timestamp));
        //业务参数
        paramMap.put("requestId", UUID.randomUUID().toString().replaceAll("-",""));
        paramMap.put("vid","1b448be3233659acf35d430ba9210bd4_1");
    
        String sign = VodSignUtil.getSign(paramMap, secretkey);
        log.debug("生成签名:{}",sign);
    
    }
}


联系客服,在线咨询