如何在MongoDB客户端字段级加密中保持一致的加密密钥?

问题描述 投票:0回答:1

我正在使用 MongoDB 客户端字段级加密来加密和解密数据。但是,我注意到每次执行该程序时,原始二进制密钥都会发生变化。这使我很难检索以前加密的数据,因为我无法使用新密钥对其进行解密。

MongoDB 客户端字段级加密有没有办法保持一致的加密密钥?如果是这样,我该怎么做?

https://www.mongodb.com/docs/manual/core/csfle/fundamentals/manual-encryption/#std-label-csfle-fundamentals-manual-encryption

https://go.dev/play/p/Ne8Kv4D193F

我正在尝试在我的 MongoDB 社区项目中实施客户端字段级加密,以便在将文档中的某些字段存储到数据库之前对其进行加密,然后在我从数据库中检索它们时对其进行解密。

我一直在关注 MongoDB 文档,并且能够在我的程序第一次执行期间成功地加密和解密数据。但是,我注意到每次再次运行程序时,密钥都在不断变化,我想保持密钥静止不动。

mongodb go security encryption primitive-types
1个回答
0
投票

应该删除这些行:

// Drop the Key Vault Collection in case you created this collection
// in a previous run of this application.
if err = Client.Database(keyVaultDb).Collection(keyVaultColl).Drop(context.TODO()); err != nil {
    log.Fatalf("Collection.Drop error: %v", err)
}

仅当密钥尚不存在时才需要以下几行:

dataKeyID, err := clientEnc.CreateDataKey(context.TODO(), provider, dataKeyOpts)
if err != nil {
    log.Fatalf("CreateDataKey error: %v", err)
}

也许先做一个

clientEnc.GetKeyByAltName
电话来检查密钥是否存在。

© www.soinside.com 2019 - 2024. All rights reserved.