【问题标题】:Decrypt the encrypted file content?解密加密文件内容?
【发布时间】:2012-06-19 06:23:28
【问题描述】:

我在使用 RSA 公钥解密解密文件时遇到问题。我的流程是接收xml文件,加密内容,然后写回同一个文件。另一个函数解密内容。我的源代码是:

public void decryptFile(String fileName,PrivateKey privateKey) throws Exception {
    Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
    cipher.init(Cipher.DECRYPT_MODE, privateKey);
    FileInputStream fis = new FileInputStream(fileName);
    File file=new File("decryptedfile.xml");
    if(file.exists()) {
        file.delete();
    }
            FileOutputStream fos = new FileOutputStream("decryptedfile.xml");
    CipherInputStream cis = new CipherInputStream(fis, cipher);
    int i;
    byte[] block = new byte[32];
    //System.out.println("Read : "+cis.read(block));
    while ((i = cis.read(block)) != -1) {
        System.out.println(String.valueOf(i));
        fos.write(block, 0, i);
    }
    fos.close();
}

我只是将加密文件的名称和相应的私钥值传递给函数。但是,cis.read(block) 在第一次尝试时返回 -1。谁能建议我如何解密加密文件?

【问题讨论】:

  • 你确定整个文件是用 RSA 加密的吗?这是非常罕见的(太慢了)。通常使用混合加密,例如 AES 用于文件(使用随机 AES 密钥加密文件,然后使用 RSA 加密 AES 密钥)。
  • 确定您正在阅读的文件存在并包含数据吗?
  • 无论您拥有多少数据,RSA Cipher 实例只会加密或解密 一个 块。这就是为什么一个块通常包含对称加密密钥,例如 AES 密钥。
  • 嗨,安德鲁,我检查了加密文件,是的,它是用加密内容创建的。

标签: java cryptography public-key-encryption encryption


【解决方案1】:

您的文件几乎可以肯定没有经过 RSA 加密。它可能在随机对称密钥下使用 AES 加密,然后使用 RSA 加密密钥。

您假设有人实际上只使用 RSA 加密了整个文件。假设实现甚至允许您执行此操作(我已经看到在尝试执行此操作时会引发异常),那么做任何有用的事情都太慢了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-27
    相关资源
    最近更新 更多