EncryptionConfig
配置内置加密模式和密钥。
C++
struct EncryptionConfig {
ENCRYPTION_MODE encryptionMode;
const char* encryptionKey;
uint8_t encryptionKdfSalt[32];
EncryptionConfig()
: encryptionMode(AES_128_GCM2),
encryptionKey(NULL)
{
memset(encryptionKdfSalt, 0, sizeof(encryptionKdfSalt));
}
const char* getEncryptionString() const {
switch(encryptionMode) {
case AES_128_XTS:
return "aes-128-xts";
case AES_128_ECB:
return "aes-128-ecb";
case AES_256_XTS:
return "aes-256-xts";
case SM4_128_ECB:
return "sm4-128-ecb";
case AES_128_GCM:
return "aes-128-gcm";
case AES_256_GCM:
return "aes-256-gcm";
case AES_128_GCM2:
return "aes-128-gcm-2";
case AES_256_GCM2:
return "aes-256-gcm-2";
default:
return "aes-128-gcm-2";
}
return "aes-128-gcm-2";
}
};
encryptionMode
内置加密模式。详见 ENCRYPTION_MODE
。建议使用 AES_128_GCM2
或 AES_256_GCM2
加密模式。这两种模式支持使用盐,安全性更高。
encryptionKey
内置加密密钥,字符串类型,长度无限制。建议使用 32 字节的密钥。
注意: 如果未指定该参数或将该参数设置为 NULL
,则无法启用内置加密,且 SDK 会返回错误码 -2
。
encryptionKdfSalt
盐,长度为 32 字节。建议你在服务端使用 OpenSSL 生成盐。详见《媒体流加密》。
注意: 只有在 AES_128_GCM2
或 AES_256_GCM2
加密模式下,该参数才生效。此时,需确保填入该参数的值不全为 0
。