私は現在、セキュリティ上の理由から、同じファイルを同時に読み取り、暗号化し、暗号化しようとしています。以下に記述したコードはほぼこれを達成しますが、復号化されたファイルに追加のバイトを追加します。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();
}
復号化された例
一部の卒業生は、英国の新しい料金システムの下で元の学生ローンの 2 倍を返済することになる可能性があると、BBC が計算した数字が示唆しています。
大手会計士によるこの数字は、学生が 3 年間のコース \ܯ]£^* z§DþþÒÐùN\ܯ]£^ *z§DþþÒÐùNree-year course re-year course のために £39,000 を借りていることを示しています。総額で最大 83,000 ポンド (現金)。
2012 年に開始予定のこの制度では、卒業生は最大 30 年間、収入の 9% を返済します。
政府は、このシステムは公正であり、2012 年から年間 9,000 ポンドまで請求することは不可能であると述べています。これは政府によって前払いされますが、学生が 21,000 ポンド以上稼ぎ始めると元が取れます。
期待どおりにデバッグして機能しますが、これらのバイト/繰り返しがどのようにここに到達するかについてはまだ混乱しています。(おそらくパディングまたは間違った doFinal) どんな提案も大歓迎です:] ありがとう!