自定义加密
在实时音视频互动中,开发者可选择对媒体流进行加密,从而保障用户的数据安全。融云提供两套加密方案:
- SDK 内置 SRTP 安全实时传输协议,即协议层的标准加密方式。以开关形式提供,使用简单。
- 开发者对媒体数据的自定义加密。即加解密完全由开发者实现,融云服务只对数据做转发,适用于对安全性有特殊要求的客户。此类加密方式,服 务端无法做合流处理,所以不适用于直播。
- 使用自定义加密后,无法使用部分 RTC 服务端功能,包括:云端录制、云端截图、内容审核、云播放器。
提示
- 若使用自定义加密,需要确保发送端和接收端的加解密算法一致,否则会无法正常通话。
- 自定义加密,可分别针对音频或视频的原始数据执行,音频和视频的加密算法可以独立设置,或对其中之一进行设置。
- 由于数据量大,考虑性能原因,自定义的加密算法需要在 C++ 层实现。 注意
无论何种加密方式,都会对客户端、服务器造成额外的资源消耗,在低性能设备上可能会影响体验。
SRTP 加密
初始化 RTC SDK 时,在 Config 中打开 SRTP 开关即可。
-
示例代码:
JavaBuilder config = Builder.create();
config.enableSRTP(true);
RCRTCEngine.getInstance().init(getApplicationContext(), config.build());
自定义加密
步骤 1:开启自定义加密
Java
RCRTCConfig config = Builder.create()
//开启自定义音频加解密
.enableAudioEncryption(true)
// 开启自定义视频加解密
.enableVideoEncryption(true)
.build();
RCRTCEngine.getInstance().init(getApplicationContext(), config);
在 5.3.0 及以后 的版本中,您需要通过 RCRTCRoomConfig
开启自定义加密。
Java
RCRTCRoomConfig.Builder builder = RCRTCRoomConfig.Builder.create()
.enableAudioEncryption(true)
.enableVideoEncryption(true);
RCRTCEngine.getInstance().joinRoom("roomId", builder.build(), new IRCRTCResultDataCallback<RCRTCRoom>() {
@Override
public void onSuccess(RCRTCRoom data) {
}
@Override
public void onFailed(RTCErrorCode errorCode) {
}
});
步骤 2:配置 NDK 环境
如果开发者的 Android App 项目还没有使用过 C++,请参考 知识库文档 配置 NDK 编译。