通过转换Hex格式的Clearkey 到 Base 64 并且自动输出符合 EME Clearkey 格式的JSON

Clearkey , 可以说是现有 DRM 的鼻祖.

DRM 全称 为 Digital Rights Management ,即 数字版权加密技术. 顾名思义,DRM通过对数字内容进行加密和附加使用规则对数字内容进行保护,可以断定用户是否符合播放,从而来保护文档、电影、音乐不被盗版.
今天我们要着重讲的是它的鼻祖-Clearkey.
Clearkey 是由 w3.org 提出的一个通过EME API请求使用对应的密钥解密加密后的视频/音频.
Clearkey 的密钥不像 Widevine / Fairplay / Playready 这样加密了的,相反,Clearkeys的密钥是没有被加密的,你可以直接截获Clearkey 解密.
Clearkey 的 License 格式如下:
{ "keys": [{ "kty":"oct", "k":"<key in base64>", "kid":"<key id in base64>" }], 'type':"temporary"}
kid : Base64编码后的 Key ID k : Base64编码后的 Key
继前言,我们已经成功获取到视频/音频的Key + Key ID , 可是我们获取到的Key + Key ID 是 Hex 状态的,并不是 Base 64. 我们需要手动编码至 Base 64 才会被视为一个正确的 License 格式.

如何转换 Hex格式的Clearkey 到 Base 64 并且自动输出符合 Clearkey License 格式的JSON

其实原理很简单,假设:(a) Key in Hex = a (b) Key ID in Hex = b
我们只需要将 a 和 b 编码成 Base64 并且移除空格或“=”,并且填入该JSON格式即可. 因此,我用 PHP 写了一个工具,通过 hex2bin 先将 Hex 编码成 Binary , 再使用 Base64 编写该 Binary 为 Base64 , 然后移除 "=" 和 空格. 由于我之前接触过几次PHP,虽然说资历尚浅,可是感谢Google和一众大神,在一个小时内我完成编写这个工具,并且将这个工具搭建在 Heroku 上.
此工具的Github Repo : https://github.com/samleong123/heroku-clearkey-hex-base64-json 此工具Heroku网站: https://clearkey-base64-2-hex-json.herokuapp.com/

示意图

通过上述工具,填写对的 Clearkey License 链接,便可使用比如 Tivimate / OTT Navigator 等播放器播放. 举例:meWATCH SG Channel 5#EXTM3U#KODIPROP:inputstream.adaptive.license_type=clearkey#KODIPROP:inputstream.adaptive.license_key=https://clearkey-base64-2-hex-json.herokuapp.com/results.php?keyid=607b7d22565c4bc3b95ff6c33ce65425&key=28cc5367df666c44be4382e64af64d57#EXTINF:-1 group-title="Mediacorp SG" tvg-id="997" tvg-chno="997" tvg-logo="https://static.togglestatic.com/shain/v1/dataservice/ResizeImage/$value?Format=%27png%27&Quality=85&ImageId=%27956277%27&EntityType=%27Item%27&EntityId=%2797098%27&Width=150&Height=150&ImageUrl=%27956277.png%27&device=%27web_browser%27&subscriptions=%27Anonymous%27&segmentationTags=%27all%27&ResizeAction=%27fill%27&HorizontalAlignment=%27center%27&VerticalAlignment=%27top%27",Channel 5 https://tglmp02.akamaized.net/out/v1/5081e069e08140c9b95f89a1659cf4dd/manifest.mpd

示意图

请注意,以上行为可能抵触串流平台 TOS ,本人不对以上行为造成的任何后果负责,请知悉!