如何使用AES(Rijndael)检查文件是否加密

Mak*_*ako 7 c# encryption aes

我在C#中使用'RijndaelManaged'和'CryptoStream'类来加密文件.在加密文件之前,我想检查文件是否已加密.

我尝试使用File.GetAttributes()方法检查加密,但它无法正常工作.

我需要一些提示,我可以检查文件是否已经加密.

Jef*_*dge 9

没有任何类型的自定义标头,绝对确保文件加密的唯一方法是尝试解密它.

如果您尝试压缩文件并且文件变小,则极不可能加密.如果字节值的分布不均匀(包括纯文本!),则不太可能加密.

这些启发式方法取决于加密的正确执行.如果AES一次应用于一个文件块,那么结果中可能会出现模式,但由于您使用的是CryptoStream,因此这不应该是一个问题.

如果您自己的代码将始终用于加密和解密文件,那么您应该考虑添加一个自定义标头,指示它是加密文件.


Eri*_*ert 5

假设我有一个包含密文X的文件F,它是带有密钥Z的明文Y的加密.

我希望确保明文Y只能由拥有密钥Z和密钥Q的人来确定.(我可以想出为什么我可能希望这样做的一些原因.)

因此,我希望用密钥Q加密已经加密的文件.

您告诉我您的系统希望检测到F已经加密,然后拒绝使用密钥Q对其进行加密?

这似乎是一个坏主意.我可能用密钥Q加密文件,无论它是否已经用密钥Z加密.