Docs 菜单
Docs 主页
/
MongoDB Manual
/ / /

ClientEncryption.decrypt()

在此页面上

  • 兼容性
  • 语法
  • 行为
  • 例子
ClientEncryption.decrypt(encryptedValue)

ClientEncryption.decrypt()如果encryptionValue 当前数据库连接配置为具有对 KMS (KMS ) 和用于加密 的密钥保管库的访问权限,则encryptionValue 解密 。

返回:解密的值。

此命令可用于以下环境中托管的部署:

  • MongoDB Atlas:用于云中 MongoDB 部署的完全托管服务

  • MongoDB Enterprise:基于订阅、自我管理的 MongoDB 版本

  • MongoDB Community:源代码可用、免费使用且可自行管理的 MongoDB 版本

decrypt() 通过以下语法实现:

clientEncryption = db.getMongo().getClientEncryption()
clientEncryption.decrypt(encryptedValue)

encryptedValue必须 子类型为6binary data 的 对象 使用客户端字段级加密创建。

configured从有权访问正确 KMS (KMS ) 和密钥保管库的数据库连接 发出的读取操作可以自动解密使用ClientEncryption.encrypt() 加密的字段值。客户端只需使用decrypt()来解密未存储在文档字段中的Binary子类型6值。

mongosh 客户端字段级加密方法需要启用客户端字段级加密的数据库连接。如果当前数据库连接在启动时未启用客户端字段级加密,则任选以下其一:

以下示例使用本地托管的 KMS 进行客户端字段级加密配置。

为本地管理的密钥配置客户端字段级加密:

  • 生成不带换行符的 base64 编码的 96 字节字符串

  • 使用 mongosh 加载密钥

export TEST_LOCAL_KEY=$(echo "$(head -c 96 /dev/urandom | base64 | tr -d '\n')")
mongosh --nodb

使用生成的本地密钥字符串创建客户端字段级加密对象:

var autoEncryptionOpts = {
"keyVaultNamespace" : "encryption.__dataKeys",
"kmsProviders" : {
"local" : {
"key" : BinData(0, process.env["TEST_LOCAL_KEY"])
}
}
}

使用配置了客户端字段级加密选项的Mongo()构造函数来创建数据库连接。 将mongodb://myMongo.example.net URI 替换为目标集群的连接字符串 URI

encryptedClient = Mongo(
"mongodb://myMongo.example.net:27017/?replSetName=myMongo",
autoEncryptionOpts
)

检索ClientEncryption对象并使用ClientEncryption.decrypt()方法对ClientEncryption.encrypt()加密的值进行解密。

clientEncryption = encryptedClient.getClientEncryption();
clientEncryption.decrypt(BinData(6,"AmTi2H3xaEk8u9+jlFNaLLkC3Q/+kmwDbbWrq+h9nuv9W+u7A5a0UnpULBNZH+Q21fAztPpU09wpKPrju9dKfpN1Afpj1/ZhFcH6LYZOWSBBOAuUNjPLxMNSYOOuITuuYWo="))

如果成功, decrypt()将返回解密后的值:

"123-45-6789"

有关在启用客户端字段级加密的情况下启动 MongoDB 连接的完整文档,请参阅Mongo()

后退

ClientEncryption.encrypt