EncryptionConfig
配置内置加密模式和密钥。
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
。