最新公告
  • 欢迎您光临码农资源网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!加入我们
  • 如何在MongoDB客户端字段级加密中保持一致的加密密钥?

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

    问题内容

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

    有没有办法在 MongoDB 中维护客户端字段级加密的一致加密密钥?如果可以,我该怎么做?

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

    https://go.dev/play/p/6W8e0OiPV2L

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

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

    正确答案

    这些行应该被删除:

    // 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 来检查密钥是否存在。

    通过说“原始二进制密钥发生变化”,我认为您的意思是数据加密密钥 (dek) 发生变化。这是由于存储 dek 的集合被删除所致。

    请参阅密钥和密钥保管库:

    客户主密钥 (cmk) 是您用来加密数据加密密钥 (dek) 的密钥….

    数据加密密钥 (dek) 是用于加密 mongodb 文档中的字段的密钥。您将数据加密密钥存储在使用 cmk 加密的 key vault 集合中……

    如果您删除数据加密密钥 (dek),则使用该 dek 加密的所有字段将永久无法读取。

    如果您删除 cmk,则使用该 cmk 加密的 dek 加密的所有字段将永久无法读取。

    想要了解更多内容,请持续关注码农资源网,一起探索发现编程世界的无限可能!
    本站部分资源来源于网络,仅限用于学习和研究目的,请勿用于其他用途。
    如有侵权请发送邮件至1943759704@qq.com删除

    码农资源网 » 如何在MongoDB客户端字段级加密中保持一致的加密密钥?
    • 20会员总数(位)
    • 16172资源总数(个)
    • 1196本周发布(个)
    • 1 今日发布(个)
    • 115稳定运行(天)

    提供最优质的资源集合

    立即查看 了解详情