如何将字节数组附加到文件而不使用java

时间:2017-02-17 06:53:38

标签: java arrays file encryption append

我尝试进行AES加密,然后生成盐。但是我遇到了一些问题。下面的代码工作正常,但每当我加密第二个等文件时,文件旁边的盐都会被覆盖。关于如何将salt byte []附加到salt fil而不覆盖它的任何建议?

Guys..i更新了我的代码..感谢该部分,虽然它修复了覆盖问题,但它没有进入下一行。

在我的文件上输出:〜V“÷ҲÖ4ô|ŒTÊm0'Z ^'û•šÙK·=这是两个盐的组合。

任何想法如何让它追加到下一行?

我尝试saltoutfile.write(“/ n”)但不起作用

    public byte[] generateSalt() throws IOException{
            //generate Salt value
            // password, iv and salt should be transferred to the other end
            // in a secure manner
            // salt is used for encoding
            // writing it to a file
            // salt should be transferred to the recipient securely
            // for decryption
    byte[] salt = new byte[8];
    SecureRandom secureRandom = new SecureRandom();
    secureRandom.nextBytes(salt);
            FileOutputStream saltOutFile = new FileOutputStream("C:\\KryptZIP\\salt.enc" , true);
            saltOutFile.write(salt);
        saltOutFile.close();
            return salt;


}

如评论中所述:这是我的读盐值

    public static byte[] readSalt() throws IOException{
    // reading the salt
            // user should have secure mechanism to transfer the
            // salt, iv and password to the recipient
            FileInputStream saltFis = new FileInputStream("C:\\KryptZIP\\salt.enc");
            byte[] salt = new byte[8];
            saltFis.read(salt);
            saltFis.close();
            return salt;
}

2 个答案:

答案 0 :(得分:4)

您需要使用带有2个参数的FileOutputStream构造函数。第二个参数是一个布尔标志,指示您是否要追加true)到文件或从头开始false)。

将您的代码更改为:

 FileOutputStream saltOutFile = new FileOutputStream("C:\\KryptZIP\\salt.enc", true);

答案 1 :(得分:0)

使用Apache FileUtils。使用方法

FileUtils.writeByteArrayToFile(java.io.File file,bytes[] content,boolean append)