【问题标题】:Decrypting file in Java with pre-existing AES key使用预先存在的 AES 密钥在 Java 中解密文件
【发布时间】:2015-12-14 04:49:54
【问题描述】:

我正在尝试做一些非常简单的事情。我在 Windows 中使用 AxCrypt 加密了一个文件。在我的 Android 应用程序中,我想解密这个文件。

AxCrypt 生成的 128 位 AES 密钥是

CWTr 45Qg eHhy n23d YPC3 DjRi IxUe bt77 TVzQ NtSh HEc=

我假设这是一个 Base64 编码的字符串,但也许我错了。我用空格将它插入到下面的代码中,但我也尝试不带空格,得到了相同的结果。

解密文件的java代码如下。解密过程开始,但出现“解密中最后一个块不完整”的错误,并且无法播放生成的文件(mp4 视频)。

Java 代码:

       try {
            Utils.logDebug(TAG, "Decrypting!");
            File encfile = new File(getFilesDir() + "/encrypted.axx");
            int read;
            if (!encfile.exists())
                encfile.createNewFile();
            File decfile = new File(getFilesDir() + "/decrypted.mp4");
            if (!decfile.exists())
                decfile.createNewFile();
            FileInputStream encfis = new FileInputStream(encfile);
            FileOutputStream decfos = new FileOutputStream(decfile);
            Cipher decipher = Cipher.getInstance("AES");
            byte key[] = Base64.decode("CWTr 45Qg eHhy n23d YPC3 DjRi IxUe bt77 TVzQ NtSh HEc=", Base64.DEFAULT);
            SecretKey skey = new SecretKeySpec(key, 0, key.length, "AES");
            decipher.init(Cipher.DECRYPT_MODE, skey);
            CipherOutputStream cos = new CipherOutputStream(decfos, decipher);
            while ((read = encfis.read()) != -1) {
                cos.write(read);
                cos.flush();
            }
            cos.close();
            Utils.logDebug(TAG, "Done decrypting!");
        } catch (Exception e) {
            Utils.logError(TAG, "TESTING error: " + e.getMessage());
        }

【问题讨论】:

    标签: java android encryption aes


    【解决方案1】:

    AxCrypt 以 CBC 模式加密,以及压缩、MAC 和许多其他细节。要对此进行解密,您需要在此处查看 http://www.axantum.com/AxCrypt/faq.html 及其发布的源代码。

    http://www.axantum.com/AxCrypt/SourceCode.html

    【讨论】:

    • 这是否意味着它生成的密钥不是我想的那样?我没有使用密码功能,我先专门创建了一个密钥,然后使用它。这样就不会涉及密码等的散列。
    • @Flyview 表示文件格式、加密方式等细节与你想象的完全不同,请查看提供的文档。确实,其中涉及大量“等”。
    • 谢谢,这很有趣。我对整个加密过程很陌生。我不打算以任何方式使用 AxCrypt。您对我可以用来在 Windows 中加密文件并在 Java 中更轻松地解密它们有什么建议吗?如果那不可能,我想我也可以用 Java 进行加密。
    • PGP 可能是最佳选择。
    猜你喜欢
    • 2021-02-02
    • 1970-01-01
    • 2013-04-11
    • 1970-01-01
    • 1970-01-01
    • 2012-02-18
    • 2014-11-07
    • 1970-01-01
    • 2015-09-23
    相关资源
    最近更新 更多