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

ClientEncryption.decrypt()

在此页面上

  • 语法
  • 行为
  • 例子
  • 了解详情
ClientEncryption.decrypt(encryptedValue)

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

返回:解密的值。

ClientEncryption.decrypt 通过以下语法实现:

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

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

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

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

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

1
  1. 启动 mongosh

    运行:

    mongosh --nodb

    --nodb 表示不连接到数据库。

  2. 生成密钥string

    生成一个基本 64 96 字节的string :

    const TEST_LOCAL_KEY = require("crypto").randomBytes(96).toString("base64")
  3. 创建加密选项对象

    要创建客户端字段级加密选项对象,请使用上一步中的 TEST_LOCAL_KEY string :

    var autoEncryptionOpts = {
    "keyVaultNamespace" : "encryption.__dataKeys",
    "kmsProviders" : {
    "local" : {
    "key" : BinData(0, TEST_LOCAL_KEY)
    }
    }
    }
  4. 创建加密客户端对象

    要创建加密的客户端对象,请使用Mongo()构造函数。 将 mongodb://myMongo.example.net URI 替换为目标集群的连接string URI 。 示例:

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

检索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