gpt4 book ai didi

Java JCA - AES 加密,检测消息是否被篡改

转载 作者:行者123 更新时间:2023-12-01 09:58:46 27 4
gpt4 key购买 nike

我试图弄清楚如何编写一个简单的Java类来使用AES加密和解密纯文本文件,但它必须能够判断其他人是否有人编辑了文件并通过该类之外的方式对其进行了加密签名的使用。如果签名不匹配,则文件将被删除。

我查看了消息摘要,并考虑将校验和存储在另一个文件中,但我想要一些建议。有什么方法可以让我们轻松实现这一点。 Java 类需要一个函数来遍历文件夹并查看文件是否已被篡改。

最佳答案

你想要的是authenticated encryption (aka AEAD) 。实现此目的的一种非常常见的方法是在伽罗瓦计数器模式 (GCM) 中使用 AES。请记住,如果使用正确,此模式可以提供出色的安全性和效率,但如果使用稍有不正确,所有这些好处都可能很快消失。例如,如果您对不同的明文重复使用 IV,您将失去几乎所有的安全保证。如果我使用的术语对您来说很陌生,并且您想要保护的数据非常敏感,我强烈建议您聘请该领域知识渊博的人员来为您执行此操作。如果您仍然希望自己执行此操作,则需要首先弄清楚以下内容:

  1. 您将如何生成 AES key ?为此,熵源非常重要,并且需要适合您希望保护的数据的敏感性。

  2. 您将如何存储您的 key ?它们将位于本地计算机上基于软件的 keystore 中,还是位于某种防篡改硬件(例如 HSM)中?如果它们仅受软件保护,您将如何保护密码?

  3. 您将如何存储密文、IV、身份验证标签和关联数据?您会使用预定义的格式(例如 CMS)还是自定义的自制格式?

  4. 除了修改文件之外,您是否还需要测试文件是否已从目录中删除和/或复制?

  5. 您想要多长的身份验证标签?

我不确定您的文件有多大,所以我不知道您是否要将整个文件读入内存,然后执行加密或使用输入/输出流方法。如果您让我了解更多详细信息,我可以为您推荐一些更好的资源。

关于Java JCA - AES 加密,检测消息是否被篡改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36971421/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com