使用fileinputstream获取加密文件的一部分

时间:2016-12-22 04:32:14

标签: java file file-io inputstream fileinputstream

我正在尝试使用解密大文件  https://github.com/martinwithaar/Encryptor4j/blob/master/src/main/java/org/encryptor4j/util/FileEncryptor.java 以下是我修改的解密方法的一部分

                //the following does not work 
                FileInputStream fis=new FileInputStream(src);
                fis.skip(83);
                is = encryptor.wrapInputStream(fis);
                os = new FileOutputStream(dest);
                //the copy method is a default method from FileEncryptor.java
                copy(is, os);

以下工作正常。(我必须解密整个文件,然后将文件的一部分读取/保存到另一个文件,然后删除旧文件并将新文件重命名为旧文件名。

                is = encryptor.wrapInputStream(new FileInputStream(src));
                os = new FileOutputStream(dest);

                copy(is, os);

                FileInputStream fis=new FileInputStream(dest);
                fis.skip(67);
                FileOutputStream fos=new FileOutputStream(dest+".2");
                copy(fis,fos);
                new File(dest).delete();
                new File(dest+".2").renameTo(new File(dest));

                fis.close();
                fos.close();

我的问题是,为什么顶部的代码不起作用? 我跟着http://www.tutorialspoint.com/java/io/fileinputstream_skip.htm了解了如何跳过一些字节。

1 个答案:

答案 0 :(得分:0)

因为加密流有状态。第84字节的加密取决于先前的加密历史。试试这个:

ReportViewer