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 进行客户端字段级加密配置。
创建加密连接
启动 mongosh
运行:
mongosh --nodb --nodb
表示不连接到数据库。生成密钥string
生成一个基本 64 96 字节的string :
const TEST_LOCAL_KEY = require("crypto").randomBytes(96).toString("base64") 创建加密选项对象
要创建客户端字段级加密选项对象,请使用上一步中的
TEST_LOCAL_KEY
string :var autoEncryptionOpts = { "keyVaultNamespace" : "encryption.__dataKeys", "kmsProviders" : { "local" : { "key" : BinData(0, TEST_LOCAL_KEY) } } } 创建加密客户端对象
要创建加密的客户端对象,请使用
Mongo()
构造函数。 将mongodb://myMongo.example.net
URI 替换为目标集群的连接string 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()
。