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()
。