流媒体加密

最近更新时间:2022-09-20 05:17:40

功能描述

在实时音视频互动过程中,开发者需要对媒体流加密,从而保障用户的数据安全。anyRTC 提供内置加密方案

  • 内置加密:加密模式和密钥存在于 app 和 SDK 中。

你可以根据需要选择合适的加密方案。

通信和直播场景均支持媒体流加密功能。但是在直播场景下,anyRTC 不支持将加密后的媒体流推到 CDN 上。

如需使用媒体流加密功能,请确保接收端和发送端都使用相同的加密方案,否则会出现未定义行为(例如音频无声或视频黑屏)。

下图描述了启用媒体流加密后的数据传输流程:

实现方法

在启用媒体流加密前,请确保已在你的项目中实现基本的实时音视频功能。

使用内置的加密方案

开启内置加密

在加入频道前,调用 enableEncryption 方法开启内置加密,并设置加密模式和密钥。

同一频道内所有用户必须使用相同的加密模式和密钥。

anyRTC 支持 4 种加密模式:

加密方式描述
AREncryptionModeAES128XTS128 位 AES 加密,XTS 模式。
AREncryptionModeAES128ECB128 位 AES 加密,ECB 模式。
AREncryptionModeAES256XTS256 位 AES 加密,XTS 模式。
AREncryptionModeSM4128ECB128 位国密 SM4 加密,ECB 模式。

示例代码

// Swift
// 创建一个 AREncryptionConfig 实例
let config = AREncryptionConfig()
// 设置加密模式为国密 SM4 加密模式
config.encryptionMode = AREncryptionMode.SM4128ECB
// 设置加密密钥
config.encryptionKey = <#T##String#>
// 启用内置加密
rtcKit.enableEncryption(true, config)
// Objective-C
// 创建一个 AREncryptionConfig 实例
AREncryptionConfig *config = [[AREncryptionConfig alloc] init];
// 设置加密模式为国密 SM4 加密模式,并设置加密密钥
config.encryptionMode = AREncryptionModeSM4128ECB;
config.encryptionKey = <#T##NSString#>;
// 启用内置加密
[rtcKit enableEncryption: YES encryptionConfig:config];

API 参考

enableEncryption