如何正确使用SDK加密串
保利威点播SDK需要用户提供 userid、readtoken、writetoken、secretkey几个配置信息才能解密播放视频。基于安全性考虑,建议这些参数保存在服务端,APP 在启动时从服务端获取并配置。
为防止 APP 端被嗅探这几个参数,需要对传输的内容进行加密。因此,就有了 SDK加密串 ——在服务器端对以上四个参数进行加密,APP端对应的进行解密。开发者应当设计自己的加解密方式,并且APP端应通过https协议请求服务端接口。
为方便快速集成和调试SDK的功能,保利威管理后台提供了一种固定加密方式的临时SDK加密串,请勿直接在正式环境使用。
点播SDK集成文档详见:
正式使用解决方案
一、设计自己的加解密方式。
服务端Java示例:
/*该示例采用AES加密算法,开发者也可以选择使用不同的加密算法,并在APP端做对应的解密。*/
String plainString = userid + "," + secretkey + "," + readtoken + "," + writetoken;
String key = "1234567812345678"; // 加密密钥
String iv = "1234567812345678"; // 加密向量
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
int blockSize = cipher.getBlockSize();
byte[] dataBytes = plainString.getBytes();
int plaintextLength = dataBytes.length;
if (plaintextLength % blockSize != 0) {
plaintextLength = plaintextLength + (blockSize - (plaintextLength % blockSize));
}
byte[] plaintext = new byte[plaintextLength];
System.arraycopy(dataBytes, 0, plaintext, 0, dataBytes.length);
SecretKeySpec keyspec = new SecretKeySpec(key.getBytes(), "AES");
IvParameterSpec ivspec = new IvParameterSpec(iv.getBytes());
cipher.init(Cipher.ENCRYPT_MODE, keyspec, ivspec);
byte[] encrypted = cipher.doFinal(plaintext);
String baseString = Base64.encode(encrypted);
System.out.println(baseString);服务器端 PHP 加密示例:
Android 端解密和配置
iOS 端解密和配置:
二、保证服务端接口稳定
服务器端接口不稳定可能会导致加密串无法成功获取,APP播放视频会出现无法解码播放的错误,建议:
程序上对接口请求增加失败重试机制;
针对加密串和不经常改动的配置,利用CDN加速和缓存,保证高可用性;
增加备用接口,当主接口请求和重试都失败时,调用备用接口。
三、对APP进行加固
对于安全性要求较高的公司,可对 APP 进行加固,防止 APP 被反编译得到源码,从而导致账号及用户隐私数据的泄漏。市面上有很多对 APP进行加固的产品可以使用。
Last updated
Was this helpful?