功能描述
在实时音视频互动过程中,开发者需要对媒体流加密,从而保障用户的数据安全。anyRTC 提供内置加密方案
- 内置加密:加密模式和密钥存在于 app 和 SDK 中。
你可以根据需要选择合适的加密方案。
通信和直播场景均支持媒体流加密功能。但是在直播场景下,anyRTC 不支持将加密后的媒体流推到 CDN 上。
如需使用媒体流加密功能,请确保接收端和发送端都使用相同的加密方案,否则会出现未定义行为(例如音频无声或视频黑屏)。
下图描述了启用媒体流加密后的数据传输流程:
实现方法
在启用媒体流加密前,请确保已在你的项目中实现基本的实时音视频功能。
使用内置的加密方案
开启内置加密
在加入频道前,调用 enableEncryption
方法开启内置加密,并设置加密模式和密钥。
同一频道内所有用户必须使用相同的加密模式和密钥。
anyRTC 支持 4 种加密模式:
加密方式 | 描述 |
---|---|
AREncryptionModeAES128XTS | 128 位 AES 加密,XTS 模式。 |
AREncryptionModeAES128ECB | 128 位 AES 加密,ECB 模式。 |
AREncryptionModeAES256XTS | 256 位 AES 加密,XTS 模式。 |
AREncryptionModeSM4128ECB | 128 位国密 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];