函数名称:MongoDB\Driver\ClientEncryption::rewrapManyDataKey()
函数描述:重新包装多个数据密钥,将其从一个密钥外部重新包装到另一个密钥外部。
适用版本:该函数在MongoDB PHP扩展版本1.7.0及以上版本可用。
用法:
MongoDB\Driver\ClientEncryption::rewrapManyDataKey(
string $keyVaultNamespace,
array $keyAltNames,
string $wrappingKey,
string $unwrappingKey
): array|object
参数:
$keyVaultNamespace
:密钥库的命名空间。$keyAltNames
:待重新包装的数据密钥的备用名称数组。$wrappingKey
:用于重新包装数据密钥的密钥ID或名称。$unwrappingKey
:用于解包数据密钥的密钥ID或名称。
返回值:
- 成功时,返回一个包含重新包装的数据密钥的数组或对象。
- 失败时,抛出MongoDB\Driver\Exception\Exception或其子类的异常。
示例:
// 创建一个MongoDB\Client实例
$client = new MongoDB\Client("mongodb://localhost:27017");
// 创建一个MongoDB\Driver\ClientEncryption实例
$clientEncryption = new MongoDB\Driver\ClientEncryption($client);
// 定义待重新包装的数据密钥备用名称数组
$keyAltNames = [
"dataKey1",
"dataKey2"
];
// 定义用于重新包装和解包数据密钥的密钥ID或名称
$wrappingKey = "wrappingKey";
$unwrappingKey = "unwrappingKey";
try {
// 重新包装多个数据密钥
$rewrappedDataKeys = $clientEncryption->rewrapManyDataKey(
"myKeyVault.namespace",
$keyAltNames,
$wrappingKey,
$unwrappingKey
);
// 打印重新包装的数据密钥
foreach ($rewrappedDataKeys as $keyAltName => $rewrappedDataKey) {
echo "Rewrapped data key for {$keyAltName}: {$rewrappedDataKey}\n";
}
} catch (MongoDB\Driver\Exception\Exception $e) {
echo "Error: " . $e->getMessage() . "\n";
}
注意事项:
- 该函数需要MongoDB扩展1.7.0及以上版本。
- 在调用此函数之前,需要先创建一个MongoDB\Driver\ClientEncryption实例。
- 在调用此函数之前,需要确保已经成功创建了密钥库,并且存在指定的密钥ID或名称。