Java 更改加密文件的AES密钥而不解密/重新加密

Java 更改加密文件的AES密钥而不解密/重新加密,java,encryption,cryptography,aes,Java,Encryption,Cryptography,Aes,我制作了一个用JAVA加密和存储文件的应用程序。 我有很多使用AES加密的文件。 我有四个访问级别&四个密钥,我想用访问级别特定的密钥加密每个文件;我需要更改密钥以使用户能够更改文件的访问级别。 是否可以仅通过提供以前的密钥而不解密文件然后重新加密来更改此密钥 不,这是不可能的。你必须重新加密你的文件。好吧,也许你可以有一个恒定的密钥来加密文件,它会被再次加密,用你可以更改的密钥?这样,唯一需要再次解密和加密的就是您的密钥:) 这并不适用于所有情况,但在某些情况下可以做到这一点。一种方法是不直接

我制作了一个用JAVA加密和存储文件的应用程序。
我有很多使用AES加密的文件。
我有四个访问级别&四个密钥,我想用访问级别特定的密钥加密每个文件;我需要更改密钥以使用户能够更改文件的访问级别。

是否可以仅通过提供以前的密钥而不解密文件然后重新加密来更改此密钥

不,这是不可能的。你必须重新加密你的文件。

好吧,也许你可以有一个恒定的密钥来加密文件,它会被再次加密,用你可以更改的密钥?这样,唯一需要再次解密和加密的就是您的密钥:)

这并不适用于所有情况,但在某些情况下可以做到这一点。

一种方法是不直接使用该“级别”的主密钥加密每个文件,而是为每个文件生成不同的随机“文件密钥”,并使用该密钥加密文件。然后使用级别密钥加密文件密钥,并将结果与文件一起存储


如果要更改文件的级别,只需对文件密钥进行解密和重新加密,而不需要对整个文件本身进行加密。

是否确定只涉及AES?或者它是一种混合加密,使用AES加密(然后是对称)加密的真实密钥?@cyroxx:是的,它只是AES,我自己写信给加密班。你为什么需要更改AES密钥?@SquareRootOfTwentyThree:我在Bugari对问题的回答中添加了我提到的原因作为评论。你的想法很有趣;但正如你所说,它并不适用于所有情况(如我的);我有四个访问级别&四个密钥,我想用访问级别特定的密钥加密每个文件;我需要更改密钥,使用户能够更改文件的访问级别。所以你的想法行不通。尽管如此,还是要感谢您的好主意。@4r1y4n请再想一想-您所描述的内容可以使用几个级别的常量键来实现。@EugeneMayevski'EldoSCorp:如何实现?通过使用4个恒定密钥,每个级别的文件仍然使用不同于其他级别的密钥进行编码,更改访问级别仍然需要更改密钥并重新编码文件!这是一种方法,但对已经加密的文件不起作用。由于除了对当前加密的文件进行完全解密/加密之外,没有任何东西允许您更改这些文件上的密钥,因此这仍然是最有效的答案。或者你可以接受tibtof的答案。是的,唯一的解决办法是首先使用特定于文件的密钥。