函数名:MongoDB\Driver\ClientEncryption::encryptExpression()
适用版本:MongoDB PHP Library 1.7.0及以上版本
用法: MongoDB\Driver\ClientEncryption::encryptExpression()函数用于将一个表达式加密成二进制数据,以便在MongoDB中进行存储或传输。
语法:
public static function encryptExpression(
string $expression,
array $options = []
): Binary
参数:
- $expression(必填):要加密的表达式,可以是字符串或二进制数据。
- $options(可选):一个关联数组,用于指定加密选项。支持以下选项:
- keyId:加密密钥的ID,必须是一个UUID字符串,默认为null。
- algorithm:加密算法的名称,例如"AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic"或"AEAD_AES_256_CBC_HMAC_SHA_512-Random",默认为null。
- additionalAuthenticatedData:附加的认证数据,可以是字符串或二进制数据,默认为null。
返回值:
- 返回一个Binary对象,包含加密后的二进制数据。
示例:
use MongoDB\Driver\ClientEncryption;
// 创建ClientEncryption对象
$clientEncryption = new ClientEncryption($keyVaultNamespace, $keyVaultClient);
// 要加密的表达式
$expression = '1234567890';
// 加密选项
$options = [
'keyId' => '01234567-89ab-cdef-0123-456789abcdef',
'algorithm' => 'AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic',
'additionalAuthenticatedData' => 'example',
];
// 加密表达式
$encryptedExpression = $clientEncryption->encryptExpression($expression, $options);
// 打印加密后的二进制数据
echo $encryptedExpression->getData();
注意事项:
- 在使用MongoDB\Driver\ClientEncryption类之前,需要先创建一个ClientEncryption对象,并通过构造函数传入密钥管理器的命名空间和客户端对象。
- 要使用此函数,需要安装MongoDB扩展,并启用Client-Side Field Level Encryption(CSFLE)功能。
- 密钥管理器必须提供所需的密钥,以便正确加密和解密数据。