MD5签名生成规则

点播系统子账号模块及获取视频播放凭证采用的是MD5签名规则,其他大部分点播模块的签名采用的SHA1签名规则,具体如下:

1.获取子账号 appidsecretkey 签名关键信息,登录官网->选择任意点播功能-> 设置-> 账号管理 -> 选择子账号修改功能 (如没有子账号,添加子账号) ,如下:

注意:只有子账号角色是内容分发的子账号才有appidsecretkey

image-20210406142532279
image-20210414162813703
image-20210414163119453

2.采用MD5签名算法生成签名,具体加密计算方法如下:

  2.1将请求所需参数(参数值非空的参数)按照参数名字典顺序排列,连接参数名与参数值,例如:ts1552447784505userIde6b23c6f51videoIde6b23c6f51c4b1cb9f0302a92ed42440_eviewerIdabcd1234viewerIp127.0.0.1;

  2.2并在拼接字符串首尾加上secretKey,以secretKey为abc为例,得到:abcts1552447784505userIde6b23c6f51videoIde6b23c6f51c4b1cb9f0302a92ed42440_eviewerIdabcd1234viewerIp127.0.0.1abc

  2.3然后采用UTF-8编码计算MD5,将MD5结果转为大写字母,作为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 buildSubSign() throws UnsupportedEncodingException, NoSuchAlgorithmException {
        String appid = "XXXXXXXX";
        String secretkey = "XXXXXXXXXXXXXXXXXXXXXXXX";
        
        long timestamp = System.currentTimeMillis();
        Map<String, String> paramMap = new HashMap<String, String>();
        //公共参数
        paramMap.put("appId", appid);
        paramMap.put("timestamp", Long.toString(timestamp));
        //业务参数
        paramMap.put("vid","1b448be3233659acf35d430ba9210bd4_1");
        
        String sign = VodSignUtil.getSignMd5(paramMap, secretkey);
        log.debug("生成签名:{}",sign);
        
    }
}


Last updated

Was this helpful?