流媒体加密

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

功能描述

在实时音视频互动过程中,开发者需要对媒体流加密,从而保障用户的数据安全。AR 提供内置加密方案和自定义加密方案,区别如下:

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

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

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

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

实现方法

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

使用内置的加密方案

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

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

AR 支持 4 种加密模式:

  • AES_128_XTS: 128 位 AES 加密,XTS 模式。
  • AES_128_ECB: 128 位 AES 加密,ECB 模式。
  • AES_256_XTS: 256 位 AES 加密,XTS 模式。
  • SM4_128_ECB: 128 位国密 SM4 加密,ECB 模式。

示例代码

EncryptionConfig _$EncryptionConfigFromJson(Map<String, dynamic> json) {
  return EncryptionConfig(
    _$enumDecodeNullable(_$EncryptionModeEnumMap, json['encryptionMode']),
    json['encryptionKey'] as String,
  );
}