閱讀493 返回首頁    go 阿裏雲 go 技術社區[雲棲]


加密下載的安全文件是什麼?如何獲取?

1、概述

出於安全性的考慮,我們點播支持對視頻進行加密。視頻加密之後使用我們的播放器進行解密,於是就需要一個加解密的流程,於是播放器下載就需要先拿到一個安全文件.
以下文檔將說明怎麼樣拿到這個安全文件.

2、檔適用人群

對於客戶端播放器實現下載需要的”安全圖片“的開發者.

3、開啟安全下載並生成安全文件

  • 1.保證開啟點播服務之後,如何開啟阿裏雲點播服務見:https://help.aliyun.com/document_detail/51512.html?spm=5176.doc51236.6.556.3OyQ7H
  • 2.在阿裏雲控製台選擇雲計算基礎服務--->視頻點播---->全局設置----->下載設置--->開啟下載功能---->選擇安全下載
  • 3.需要提供兩個值來獲取密鑰: app唯一標識如何獲取?
    • 安卓:需要提供一個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(); }
    • iOS:直接填bundleID即可
  • 4.需要提供兩個值來獲取密鑰: 離線解密私鑰怎麼填寫? 填寫16-32位的數字即可,其他沒有限製.
  • 5.填寫完成之後點擊“生成密鑰並並下載” 這樣就拿到了你想要的安全圖片了.

注意:
提供獲取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'
        }
    }

最後更新:2017-08-25 11:32:23

  上一篇:go  外貿企業做Google(穀歌)推廣的重要性和必要性
  下一篇:go  點播和播放器下載需要的參數的區別(VideoId、AccessKeyId、AccessKeySecret、playKey、playauth)