我用mysql导出数据库,然后用Java在Ubuntu上转储数据库,然后用Java加密和解密它。我使用以下类Encrypt and Decrypt with Java进行此操作。但是解密后,文件开头的某些字符是错误的。这是问题所在:第一个图像是以编程方式具有mysqldump,加密和解密的文件。第二个只是来自同一命令行的mysqldump。您能指出我该怎么做吗?谢谢
哦,那很简单。这种使用CBC加密的愚蠢(但有趣的是,看上去在很大程度上是正确的)方法将IV存储在单独的文件中,覆盖了所有旧文件。因此,如果您覆盖或获取了错误的IV文件,则解密后开始时将获得16个随机字节。因此,除非找到希望的IV文件,否则您的前16个字节(/字符)现在将永远丢失。
当然,任何理智的加密程序都将盐(密码和PBKDF2用于密钥派生)和IV与密文存储在同一文件中。
不过,如果您设法丢失了盐文件或密码,那么所有数据都将丢失,因此...