当我写回加密的字节时,我的 .exe 文件似乎已损坏。
static byte[] read(String inputfn){
send("Reading file: " + inputfn);
File file = new File(inputfn);
send("File size: " + file.length());
byte[] result = null;
try {
InputStream input = new BufferedInputStream(new FileInputStream(file));
result = readclose(input);
}
catch (FileNotFoundException ex){
send(ex);
}
return result;
}
static byte[] readclose(InputStream input2){
bk = new byte[1000*1024];
ByteArrayOutputStream result = null;
try {
try {
result = new ByteArrayOutputStream(bk.length);
int bytesRead = 0;
while(bytesRead != -1){
bytesRead = input2.read(bk);
if(bytesRead > 0){
result.write(bk, 0, bytesRead);
}
}
crypted = xe.encrypt(bk, 1, 100);
// send(crypted);
send("Writing new file: "+ DIR_OUT.toString());
// OP = crypted.getBytes();
// byte[] PP = result.getBytes();
//write(bk,DIR_OUT);
}
finally {
input2.close();
}
}
catch (IOException ex){
send(ex);
}
return result.toByteArray();
}
变量 bk 等于放回文件中的字节,我如何使它成为正在输入的文件字节的长度?我只希望它加密文件中的字节。我必须将其设为 1000,以便可以加密所有文件字节,否则它只会加密一些。
此外,一旦字节被加密,为了使 .exe 工作,我是否必须在写入之前转换回 base64string?(那会完全取消加密)