首页 > 生活服务 > 视频技巧

视频技巧

m3u8视频防盗加密

管理员 1年前 75浏览

为什么要加密

视频采用m3u8 ts切片方式,采用切片默认的aes-128加密方式不安全,key值也是16位明文的,随便下个video.js插件就可以破解(其它播放插件也可以),让后端做来源判断或者加请求标识个人感觉安全系数也不是很大。

m3u8视频防盗方案

方案一:

后端对m3u8返回内容进行加密处理,前端请求m3u8时可以包括加SIGN验证,根据视频id加请求参数验证等,以便后端判断请求是否给你返回内容。


方案二:

如果感觉第一种麻烦可以让后端对key进行特殊二次加密(当然前提是前端知道后端是如何加密的以方便如何解密)

    var handleKeyResponse = function handleKeyResponse(segment, objects, finishProcessingFn) {
        return function (error, request) {
            var response = request.response;
            var errorObj = handleErrors(error, request);
            if (errorObj) {
                return finishProcessingFn(errorObj, segment);
            }
            /**
             * 
             * 1、咔咔咔写自己拿到key返回内容进行解密
             * 2、最后得到的是一个16位字符串
             * 3、必须将字符串转换为ArrayBuffer
             * 注:假如某个节视频key解密后为 2y7d9iwu8rc3fa0x
             */
            //字符串转字符串ArrayBuffer
            function str2ab(s,f) {
                var b = new Blob([s],{type:'text/plain'});
                var r = new FileReader();
                r.readAsArrayBuffer(b);
                r.onload = function (){if(f)f.call(null,r.result)}
            }
            // 此处是为了演示,实际应该填写每次解密后的字符串变量
            str2ab('2y7d9iwu8rc3fa0x',function(ab){
                //ab为ArrayBuffer
                var view = new DataView(ab);
                var bytes = new Uint32Array([view.getUint32(0), view.getUint32(4), view.getUint32(8), view.getUint32(12)]);
                console.log(bytes);
                for (var i = 0; i < objects.length; i++) {
                    objects[i].bytes = bytes;
                }
                return finishProcessingFn(null, segment);
            });
            // 将原来的方法注释掉
            // var view = new DataView(new Int8Array(hexAesStr('516aa4d465a4085baddcac890cbcbf7e')).buffer);
            // var bytes = new Uint32Array([view.getUint32(0), view.getUint32(4), view.getUint32(8), view.getUint32(12)]);
            // for (var i = 0; i < objects.length; i++) {
            //     objects[i].bytes = bytes;
            // }
            // return finishProcessingFn(null, segment);
        };
    };



版权声明:本文为原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
关注微信公众号:"cq_xifan";

评论

收藏

评论列表

  • 这篇文章还没有收到评论,赶紧来抢沙发吧~

Powered By 重庆饭哥 © 2014-2022 教学资源分享站 渝ICP备20005643号-1

相信有一天,理想主义终将所向披靡.

Design by © 2021 XIFAN. Powered by 重庆饭哥

站点声明: 本站转载作品版权归原作者及来源网站所有,原创内容作品版权归作者所有,任何内容转载、商业用途等均须联系原作者并注明来源。

友情链接: 官方网站 饭哥在线工具 饭哥导航 在线运行 博客交流社区 重庆艺术工程职业学院