В настоящее время я пытаюсь выполнить чтение, шифровать и шифровать один и тот же файл одновременно (по соображениям безопасности).Код, который я написал ниже, почти достигает этого, но добавляет дополнительные байты в расшифрованный файл.Метод дешифрования почти точен, за исключением того, что c.init находится в DECRYPT_MODE.
public static void encryptFile(String path, byte[] key) throws Exception {
Cipher c = Cipher.getInstance("AES/ECB/PKCS5Padding");
SecretKeySpec k = new SecretKeySpec(key, "AES");
c.init(Cipher.ENCRYPT_MODE, k);
RandomAccessFile raf = new RandomAccessFile(path, "rw");
byte[] buf = new byte[256];
byte[] output;
int bytesRead = 0;
int totalBytes = 0;
while ((bytesRead = raf.read(buf)) >= 0) {
int len = buf.length;
if (bytesRead < len) {
byte[] out2 = c.doFinal(buf, 0 , bytesRead);
raf.seek(totalBytes);
raf.write(out2);
} else {
output = c.update(buf, 0, bytesRead);
raf.seek(totalBytes);
raf.write(output);
}
totalBytes += bytesRead;
}
raf.getFD().sync();
raf.close();
}
Расшифрованный пример
Некоторые выпускники могут в конечном итоге выплатить двойнуюисходные студенческие ссуды в рамках новой системы оплаты в Англии, цифры, рассчитанные для BBC, предполагают.
Цифры ведущих бухгалтеров показывают, что студент заимствовал 39 000 фунтов стерлингов на трехлетний курс \ ܯ] £ ^* z§DþÒÐùN \ ܯ] £ ^ * z§DþÒÐùНегодичный курс Повторный годовой курс может окупить в общей сложности до 83 000 фунтов стерлингов в денежном выражении.
При режиме, который должен начаться в 2012 году, выпускники будут выплачивать 9% своего заработка на срок до 30 лет.
Правительство заявляет, что система является справедливой, и с 2012 года она не может взимать до 9 000 фунтов стерлингов в год, чтобудет оплачено правительством заранее, но выплачено, как только студент начнет зарабатывать 21 000 фунтов стерлингов или больше.
Это отлаживает и функционирует, как я и ожидал, я все еще не понимаю, как эти байты / повторенияснова здесь.(Возможно заполнение или неправильный doFinal) Любые предложения будут с благодарностью:] Спасибо!