加密下载的安全文件是什么?如何获取?

简介: 出于安全性的考虑,我们点播支持对视频进行加密。视频加密之后使用我们的播放器进行解密,于是就需要一个加解密的流程,于是播放器下载就需要先拿到一个安全文件.以下我们来说明怎么样拿到这个安全文件.

1、概述

出于安全性的考虑,我们点播支持对视频进行加密。视频加密之后使用我们的播放器进行解密,于是就需要一个加解密的流程,于是播放器下载就需要先拿到一个安全文件.以下我们来说明怎么样拿到这个安全文件.

2、文档适用人群

对于客户端播放器实现下载需要的”安全图片“的开发者.

3、开启安全下载并生成安全文件

  • 1.保证开启点播服务之后,如何开启阿里云点播服务见:https://help.aliyun.com/document_detail/51512.html?spm=5176.doc51236.6.556.3OyQ7H
  • 2.在阿里云控制台选择云计算基础服务--->视频点播---->全局设置----->下载设置--->开启下载功能---->选择安全下载. [--->图示传送门]
  • 3.Android的唯一标识:需要提供一个sha1的密钥.可以通过命令行获取也可以通过代码获取。在文章的最后提供了一个代码段获取的示例.
  • 4.iOS的唯一标识:直接填bundleID即可
  • 5.需要提供两个值来获取密钥: 离线解密私钥怎么填写?
    填写16-32位的数字即可,其他没有限制.
  • 6.填写完成之后点击“生成密钥并并下载” 这样就拿到了你想要的安全图片了.

注意:

  1. 提供获取sha1的算法的前提是获取的默认的keystore的签名的sha1. 如果你最终release包是另外的keystore,建议直接在gradle文件中直接配置release keystore然后通过下面获取sha1的方法获取.

     //这里演示如何配置keystore,下面的keystore文件开发者可以自由替换, 一下配置的前提是开发者将keystore文件放在项目的根目录下.
     signingConfigs {
         debug {
             storeFile file("$rootDir/debug.keystore")
             storePassword "android"
             keyAlias "androiddebugkey"
             keyPassword "android"
         }
    
         release {
             storeFile file("$rootDir/debug.keystore")
             storePassword "android"
             keyAlias "androiddebugkey"
             keyPassword "android"
         }
     }
    
         buildTypes {
    
         debug {
             multiDexEnabled true
             signingConfig signingConfigs.debug
             minifyEnabled false
             proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
         }
    
         release {
             minifyEnabled true
             multiDexEnabled true
             signingConfig signingConfigs.release
             proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
         }
     }
    

  2. 这个是获取SHA1的方法
    //这个是获取SHA1的方法
    public static String getCertificateSHA1Fingerprint(Context context) {
         
         //获取包管理器
         PackageManager pm = context.getPackageManager();
         //获取当前要获取SHA1值的包名,也可以用其他的包名,但需要注意,
         //在用其他包名的前提是,此方法传递的参数Context应该是对应包的上下文。
         String packageName = context.getPackageName();
         //返回包括在包中的签名信息
         int flags = PackageManager.GET_SIGNATURES;
         PackageInfo packageInfo = null;
         try {
         
             //获得包的所有内容信息类
             packageInfo = pm.getPackageInfo(packageName, flags);
         } catch (PackageManager.NameNotFoundException e) {
         
             e.printStackTrace();
         }
         //签名信息
         Signature[] signatures = packageInfo.signatures;
         byte[] cert = signatures[0].toByteArray();
         //将签名转换为字节数组流
         InputStream input = new ByteArrayInputStream(cert);
         //证书工厂类,这个类实现了出厂合格证算法的功能
         CertificateFactory cf = null;
         try {
         
             cf = CertificateFactory.getInstance("X509");
         } catch (CertificateException e) {
         
             e.printStackTrace();
         }
         //X509证书,X.509是一种非常通用的证书格式
         X509Certificate c = null;
         try {
         
             c = (X509Certificate) cf.generateCertificate(input);
         } catch (CertificateException e) {
         
             e.printStackTrace();
         }
         String hexString = null;
         try {
         
             //加密算法的类,这里的参数可以使MD4,MD5等加密算法
             MessageDigest md = MessageDigest.getInstance("SHA1");
             //获得公钥
             byte[] publicKey = md.digest(c.getEncoded());
             //字节到十六进制的格式转换
             hexString = byte2HexFormatted(publicKey);
         } catch (NoSuchAlgorithmException e1) {
         
             e1.printStackTrace();
         } catch (CertificateEncodingException e) {
         
             e.printStackTrace();
         }
         return hexString;
     }
     //这里是将获取到得编码进行16进制转换
     private static String byte2HexFormatted(byte[] arr) {
         
         StringBuilder str = new StringBuilder(arr.length * 2);
         for (int i = 0; i < arr.length; i++) {
         
             String h = Integer.toHexString(arr[i]);
             int l = h.length();
             if (l == 1)
                 h = "0" + h;
             if (l > 2)
                 h = h.substring(l - 2, l);
             str.append(h.toUpperCase());
             if (i < (arr.length - 1))
                 str.append(':');
         }
         return str.toString();
     }
    
目录
相关文章
|
1月前
|
存储 安全 API
如何对 API 进行安全加密?
对API进行安全加密是保障数据安全和系统稳定的重要措施
142 56
|
2月前
|
安全 网络安全 区块链
网络安全与信息安全:构建数字世界的防线在当今数字化时代,网络安全已成为维护个人隐私、企业机密和国家安全的重要屏障。随着网络攻击手段的不断升级,从社交工程到先进的持续性威胁(APT),我们必须采取更加严密的防护措施。本文将深入探讨网络安全漏洞的形成原因、加密技术的应用以及提高公众安全意识的重要性,旨在为读者提供一个全面的网络安全知识框架。
在这个数字信息日益膨胀的时代,网络安全问题成为了每一个网民不可忽视的重大议题。从个人信息泄露到企业数据被盗,再到国家安全受到威胁,网络安全漏洞如同隐藏在暗处的“黑洞”,时刻准备吞噬掉我们的信息安全。而加密技术作为守护网络安全的重要工具之一,其重要性不言而喻。同时,提高公众的安全意识,也是防范网络风险的关键所在。本文将从网络安全漏洞的定义及成因出发,解析当前主流的加密技术,并强调提升安全意识的必要性,为读者提供一份详尽的网络安全指南。
|
2月前
|
存储 安全 5G
|
2月前
|
安全 算法 网络安全
网络安全与信息安全:守护数字世界的坚盾在这个高度数字化的时代,网络安全和信息安全已成为全球关注的焦点。无论是个人隐私还是企业数据,都面临着前所未有的风险和挑战。本文将深入探讨网络安全漏洞、加密技术以及安全意识的重要性,旨在为读者提供实用的知识,帮助构建更加安全的网络环境。
【10月更文挑战第4天】 在数字化浪潮中,网络安全与信息安全成为不可忽视的议题。本文通过分析网络安全漏洞的类型与成因,探讨加密技术的原理与应用,并强调提升安全意识的必要性,为读者提供一套全面的网络安全知识框架。旨在帮助个人和企业更好地应对网络威胁,保护数字资产安全。
143 65
|
2月前
|
安全 Linux 数据安全/隐私保护
python知识点100篇系列(15)-加密python源代码为pyd文件
【10月更文挑战第5天】为了保护Python源码不被查看,可将其编译成二进制文件(Windows下为.pyd,Linux下为.so)。以Python3.8为例,通过Cython工具,先写好Python代码并加入`# cython: language_level=3`指令,安装easycython库后,使用`easycython *.py`命令编译源文件,最终生成.pyd文件供直接导入使用。
python知识点100篇系列(15)-加密python源代码为pyd文件
|
2月前
|
数据安全/隐私保护 Python
Zipfile学习笔记(二)::通过zipfile模块暴力破解加密的压缩文件
如何使用Python的zipfile模块生成密码表并尝试暴力破解加密的ZIP压缩文件。
48 1
Zipfile学习笔记(二)::通过zipfile模块暴力破解加密的压缩文件
|
2月前
|
存储 安全 前端开发
端到端加密:确保数据传输安全的最佳实践
【10月更文挑战第12天】端到端加密(E2EE)是确保数据传输安全的重要手段,通过加密技术保障数据在传输过程中的隐私与完整性,防止第三方窃听和篡改。本文介绍E2EE的工作原理、核心优势及实施步骤,并探讨其在即时通讯、文件共享和金融服务等领域的应用,强调了选择加密协议、密钥管理、数据加密及安全接口设计的重要性,旨在帮助企业和开发者有效保护用户数据,满足数据保护法规要求。
|
2月前
|
安全 数据安全/隐私保护 CDN
阿里云国际站:海外视频安全的DRM
阿里云国际站:海外视频安全的DRM加密
|
2月前
|
安全 数据安全/隐私保护 CDN
阿里云海外视频安全的DRM
阿里云海外视频安全的DRM加密
|
3月前
|
人工智能 供应链 安全
网络安全与信息安全:构建数字世界的坚固防线在当今数字化时代,网络安全已成为维护个人隐私、企业机密和国家安全的重要基石。本文旨在探讨网络安全漏洞、加密技术及安全意识等关键领域,通过深入浅出的方式,引导读者理解网络安全的核心要素,并分享实用的防护策略,共同守护我们的数字世界。
随着互联网技术的飞速发展,网络安全威胁日益凸显,成为全球关注的焦点。本文聚焦网络安全的三大核心议题——网络安全漏洞、加密技术与安全意识,旨在揭示它们之间的相互关联与重要性。通过剖析真实案例,展现网络攻击的复杂性与破坏力;解析加密技术的原理与实践,强调其在保护数据安全中的关键作用;同时,倡导提升公众安全意识,构建多层次的网络安全防护体系。本文不仅为专业人士提供技术参考,也旨在提高普罗大众的网络安全认知,共同筑牢数字世界的安全防线。
178 10