2012-11-24 58 views
0

當我將字節寫回加密後,我的.exe文件似乎正在破壞。對.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? (是否會完全取消加密)

回答

0

bk只是您的緩衝區。你爲什麼要加密?你想要加密的是結果的內容。 crypted = xe.encrypt(result.toByteArray(),1,100); 如果你這樣做,它也不重要。

+0

工作表示感謝,但我將如何將加密應用於該文件,並允許它仍然可執行?我試過寫(crypted.getByes(),文件) 我的寫入方法的工作原理和輸出文件,但它看起來像加密破壞它。我將如何使這仍然工作,但仍然加密。 – user1848712

+0

你期望什麼?你通過加密破壞文件,你必須解密它燒傷 – AlexWien

+0

那麼如何繞過AV等crypters?文件中的字節需要加密,但是如果我在打開之前需要對它們進行解密,它仍然與原始文件相同? – user1848712

相關問題