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

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

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();
     }
    
目录
相关文章
|
4月前
|
存储 安全 API
如何对 API 进行安全加密?
对API进行安全加密是保障数据安全和系统稳定的重要措施
315 56
|
3天前
|
存储 安全 数据安全/隐私保护
Hyper V文件复制安全:加密与访问控制
在Hyper-V环境中,确保文件复制的安全性至关重要。主要措施包括:启用数据加密、使用HTTPS协议和磁盘加密技术(如BitLocker)保护数据传输和存储;通过身份验证、权限管理和审核日志控制访问;定期更新补丁、实施网络隔离及制定备份恢复策略。这些多层次的安全措施共同防止未经授权的访问和数据泄露,保障数据安全。
Hyper V文件复制安全:加密与访问控制
|
15天前
|
安全 算法 物联网
SSL/TLS:互联网通信的加密基石与安全实践
**简介:** 在数字化时代,互联网每天传输海量敏感数据,网络攻击频发。SSL/TLS协议作为网络安全的基石,通过加密技术确保数据安全传输。本文解析SSL/TLS的技术架构、密码学原理、应用场景及常见误区,探讨其在未来的发展趋势,强调持续演进以应对新型威胁的重要性。 SSL/TLS不仅保障Web安全,还广泛应用于API、邮件、物联网等领域,并遵循合规标准如PCI DSS和GDPR。
|
5月前
|
安全 网络安全 区块链
网络安全与信息安全:构建数字世界的防线在当今数字化时代,网络安全已成为维护个人隐私、企业机密和国家安全的重要屏障。随着网络攻击手段的不断升级,从社交工程到先进的持续性威胁(APT),我们必须采取更加严密的防护措施。本文将深入探讨网络安全漏洞的形成原因、加密技术的应用以及提高公众安全意识的重要性,旨在为读者提供一个全面的网络安全知识框架。
在这个数字信息日益膨胀的时代,网络安全问题成为了每一个网民不可忽视的重大议题。从个人信息泄露到企业数据被盗,再到国家安全受到威胁,网络安全漏洞如同隐藏在暗处的“黑洞”,时刻准备吞噬掉我们的信息安全。而加密技术作为守护网络安全的重要工具之一,其重要性不言而喻。同时,提高公众的安全意识,也是防范网络风险的关键所在。本文将从网络安全漏洞的定义及成因出发,解析当前主流的加密技术,并强调提升安全意识的必要性,为读者提供一份详尽的网络安全指南。
|
5月前
|
存储 安全 5G
|
23天前
|
算法 安全 Java
即时通讯安全篇(一):正确地理解和使用Android端加密算法
本文主要讨论针对Android这样的移动端应用开发时,如何正确的理解目前常用的加密算法,为诸如即时通讯应用的实战开发,如何在合适的场景下选择适合的算法,提供一些参考。
42 0
|
5月前
|
安全 算法 网络安全
网络安全与信息安全:守护数字世界的坚盾在这个高度数字化的时代,网络安全和信息安全已成为全球关注的焦点。无论是个人隐私还是企业数据,都面临着前所未有的风险和挑战。本文将深入探讨网络安全漏洞、加密技术以及安全意识的重要性,旨在为读者提供实用的知识,帮助构建更加安全的网络环境。
【10月更文挑战第4天】 在数字化浪潮中,网络安全与信息安全成为不可忽视的议题。本文通过分析网络安全漏洞的类型与成因,探讨加密技术的原理与应用,并强调提升安全意识的必要性,为读者提供一套全面的网络安全知识框架。旨在帮助个人和企业更好地应对网络威胁,保护数字资产安全。
206 65
|
5月前
|
安全 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文件供直接导入使用。
172 3
python知识点100篇系列(15)-加密python源代码为pyd文件
|
5月前
|
数据安全/隐私保护 Python
Zipfile学习笔记(二)::通过zipfile模块暴力破解加密的压缩文件
如何使用Python的zipfile模块生成密码表并尝试暴力破解加密的ZIP压缩文件。
88 1
Zipfile学习笔记(二)::通过zipfile模块暴力破解加密的压缩文件
|
5月前
|
存储 安全 前端开发
端到端加密:确保数据传输安全的最佳实践
【10月更文挑战第12天】端到端加密(E2EE)是确保数据传输安全的重要手段,通过加密技术保障数据在传输过程中的隐私与完整性,防止第三方窃听和篡改。本文介绍E2EE的工作原理、核心优势及实施步骤,并探讨其在即时通讯、文件共享和金融服务等领域的应用,强调了选择加密协议、密钥管理、数据加密及安全接口设计的重要性,旨在帮助企业和开发者有效保护用户数据,满足数据保护法规要求。