2012-08-10 71 views
2

我做了加密和存储文件的JAVA应用程序。
我有很多使用AES加密的文件。
我有四个访问级别&四个键,我想与它的访问级别特定的密钥每个文件进行加密;我需要更改KEY以使用户能够更改文件的访问级别。
是否有可能仅通过提供以前的密钥并且不解密文件然后重新加密它们来更改此密钥?改变AES密钥它

+0

您确定只涉及AES吗?或者它是一种混合加密,它使用AES加密(然后对称)加密的真正密钥? – cyroxx 2012-08-10 16:03:21

+0

@cyroxx:是的,它只有AES,我写信给自己加密课程。 – RYN 2012-08-10 16:38:47

+0

为什么您需要更改AES密钥? – SquareRootOfTwentyThree 2012-08-10 17:20:33

回答

4

不,这是不可能的。你将不得不重新加密你的文件。

+0

是的,解决这个问题的唯一方法是首先使用文件特定的键。 – 2012-08-10 18:53:08

4

好吧,也许你可以有恒定的密钥进行加密的文件,将被再次加密,你可以改变的关键?这种方式唯一的事情,将有被解密,并再次被加密将是你的关键:)

它不适合所有情况,但也有一些地方是应该做的伎俩。

+0

+007不错的想法。 – tibtof 2012-08-10 16:08:47

+0

你的想法很有趣,但正如你所说,它不适合所有情况(如我的);我有四个访问级别和四个密钥,我想用它的访问级别特定的KEY来加密每个文件;我需要更改KEY以使用户能够更改文件的访问级别。所以你的想法是行不通的。不过谢谢你的好主意。 – RYN 2012-08-10 16:42:58

+0

@ 4r1y4n再次思考 - 您所描述的内容可以使用多个级别的常量键来实现。 – 2012-08-10 16:57:14

2

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

当你想改变一个文件的级别,你只需要解密和重新加密的文件密钥,而不是整个文件本身。