视频点播 VOD-Key防盗链:加密算法D

时间:2024-04-18 10:03:58

加密算法D

鉴权URL格式

原始URL?auth_info={加密串}.{EncodedIV}
加密串EncodedIV的计算公式:
  • 加密原始串 = url_encoding({path}+"$"+{Timestamp})
  • 加密串 = aes_cbc_128_pkcs5padding(原始加密串,key,IV)
  • EncodedIV = hex(IV)
表5 鉴权字段描述

字段

描述

path

指从域名开始,到最后一层目录,包括域名后的“/”,也包含最后一层目录后的“/”,不包括文件名。

示例:/asset/32237c8f68fcc6071a2d8e3421eee20d/play_video/

Timestamp

鉴权URL生成时间,UTC时间,格式为yyyyMMddHHmmss,用于检查鉴权参数是否过期。

示例:20190805101025

key

在控制台设置的防盗链Key值,具体请参见配置步骤

IV

随机生成的bytes数组,长度为16。

hex():将bytes数组转换成十六进制的字符串。

生成IV生成示例代码如下所示:
byte[] iv = new byte[16];
SecureRandom secureRand = new SecureRandom();
secureRand.nextBytes(iv);
鉴权URL示例
原始URL:https://179.cdn-vod.huaweicloud.com/asset/32237c8f68fcc6071a2d8e3421eee20d/play_video/index.m3u8
path:/asset/32237c8f68fcc6071a2d8e3421eee20d/play_video/
key:8Ks1qn14XRO28qOa
Timestamp:20190805102430
则根据计算公式,得到加密串EncodedIV
原始加密串 = url_encoding("/asset/32237c8f68fcc6071a2d8e3421eee20d/play_video/") + "$" + "20190805102430"
加密串 = aes_cbc_128_pkcs5padding(原始加密串,key,IV) = 34M%2F6KtYgxuAozdBLIVTe0dUVAZdvXsYQoYAnDmuhRHh1hshYg%2B2Tl0AmSwySDh%2BmkER44qYKpSP%2BgfsLM%2FIZe4F6K4n1Nx6ouGwyKfqdDA%3D
EncodedIV = hex(IV) = 79436d453636364e335941713330534e
最终得到算法D的鉴权URL
https://179.cdn-vod.huaweicloud.com/asset/32237c8f68fcc6071a2d8e3421eee20d/play_video/index.m3u8?auth_info=34M%2F6KtYgxuAozdBLIVTe0dUVAZdvXsYQoYAnDmuhRHh1hshYg%2B2Tl0AmSwySDh%2BmkER44qYKpSP%2BgfsLM%2FIZe4F6K4n1Nx6ouGwyKfqdDA%3D.79436d453636364e335941713330534e
support.huaweicloud.com/usermanual-vod/vod010014.html