Encryption 文件是否用AES加密?

Encryption 文件是否用AES加密?,encryption,aes,Encryption,Aes,如果我知道算法是AES,有没有办法判断文件是否已经加密 我应该是加密它的人,所以要解密或加密的信息不是问题。但是,如果您试图解密尚未加密的文件,则会丢失所有数据。如果加密两次,就会得到双重加密。您可以反转双重加密,但需要知道它已加密两次 有没有一种方法可以通过编程来确定 我是用Java做的。无法判断是否有任何东西用AES加密过,它没有留下签名,这是问题的一部分。尽管您可以通过测试数据的长度(字节)是否为16的倍数来推断它可能是用AES或其他128位分组密码加密的,这表明在最后一个块上填充了128

如果我知道算法是AES,有没有办法判断文件是否已经加密

我应该是加密它的人,所以要解密或加密的信息不是问题。但是,如果您试图解密尚未加密的文件,则会丢失所有数据。如果加密两次,就会得到双重加密。您可以反转双重加密,但需要知道它已加密两次

有没有一种方法可以通过编程来确定


我是用Java做的。

无法判断是否有任何东西用AES加密过,它没有留下签名,这是问题的一部分。尽管您可以通过测试数据的长度(字节)是否为16的倍数来推断它可能是用AES或其他128位分组密码加密的,这表明在最后一个块上填充了128位分组密码,但无法判断是否用AES加密了任何内容,它没有留下签名,这是问题的一部分。虽然您可以通过测试数据的长度(以字节为单位)是否为16的倍数来推断它可能是用AES或其他128位分组密码加密的,但这表明在最后一个块上填充了128位分组密码,这取决于未加密的文件格式。如果未加密的文件具有特定的文件头,则可以搜索该文件头。如果您找到它,则该文件未加密。如果找不到,文件可能会被加密


如果未加密的文件没有特定的文件头。。。那就倒霉了。

这取决于未加密的文件格式。如果未加密的文件具有特定的文件头,则可以搜索该文件头。如果您找到它,则该文件未加密。如果找不到,文件可能会被加密


如果未加密的文件没有特定的文件头。。。那就倒霉了。

如果您愿意使用外部程序,您可以使用openssl尝试解密数据。只要您在未加密的数据上提供非空密码,它将返回一个“坏幻数”错误。目前还不确定openssl是如何生成该消息的(如果可以的话,您可以在代码中这样做),但这只是一个开始

$ openssl enc -d -aes-256-cbc -in /Applications/Wireshark.app/Contents/MacOS/Wireshark
enter aes-256-cbc decryption password:
bad magic number
另一种方法是检查文件的前8个字符是否为“salt_u_u”,以下8个字符是否为salt(前提是加密是salt的,openssl二进制文件默认情况下是salt的,但可以禁用)

0000000:5361 6c74 6564 5f5f 70d6 3655 ae12 58de盐渍p.6U..X


如果您愿意使用外部程序,则可以使用openssl尝试解密数据。只要您在未加密的数据上提供非空密码,它将返回一个“坏幻数”错误。目前还不确定openssl是如何生成该消息的(如果可以的话,您可以在代码中这样做),但这只是一个开始

$ openssl enc -d -aes-256-cbc -in /Applications/Wireshark.app/Contents/MacOS/Wireshark
enter aes-256-cbc decryption password:
bad magic number
另一种方法是检查文件的前8个字符是否为“salt_u_u”,以下8个字符是否为salt(前提是加密是salt的,openssl二进制文件默认情况下是salt的,但可以禁用)

0000000:5361 6c74 6564 5f5f 70d6 3655 ae12 58de盐渍p.6U..X


你知道它是加密的,因为它与原始数据不匹配。如果你试图解密数据,为什么会丢失数据?安全部门已经得到了一些关于这方面的好信息@Eric我不太确定,我已经运行了一些测试,在未加密的数据通过解密运行后,可能会删除无法撤消的数据。您的加密算法可能应该添加一个标头,以便您可以通过检查标头来判断。您知道它是加密的,因为它与原始数据不匹配。如果尝试删除,为什么会丢失数据解密数据?安全部门得到了一些关于这方面的好信息@Eric我不太确定,我已经运行了一些测试,在未加密的数据通过解密运行后,往往会删除无法撤消的数据。您的加密算法可能应该添加一个头,以便您可以通过检查头来判断。我不能说我对它没有留下痕迹感到失望。我不能说我对它没有留下痕迹感到失望跟踪。