Belirli bir ileti için öngörülebilir bir IV olması gerekir. Sabit kodlama IV öngörülebilir yapar. Yani şifreli IV geçmek için bir yol bulmak gerekir. IV olsa da, anahtar gizli tutulmalıdır zorunda değildir.
Bir blok şifreleme sabit bir boyutta düz metin bloğu üzerinde çalışır. Giriş için yeterli düz metin yoksa, bu alıcı verilerden dolguyu ayırt edebilir bir şekilde yastıklı edilmelidir. Bağlantılı örnek tamamen bu sayar, ve bu bir hatadır. Bir CipherOutputStream
kullanılırsa, kısmi son blok sessizce şifreli kesilecek. Cipher
nesne doğrudan kullanılırsa, kısmi bir blok doFinal
yöntem bir istisna yükseltmek neden olur. Bunun yerine, PKCS5Padding gibi bir şey kullanın.
Uygun bir Java örnek bu gibi bir şey olacaktır:
SecretKey secret = new SecretKeySpec(key, "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, secret);
AlgorithmParameters param = cipher.getParameters();
/* In addition to ciphertext in "cos", recipient needs IV. */
byte[] iv = param.getParameterSpec(IvParameterSpec.class).getIV();
CipherOutputStream cos = new CipherOutputStream(output, cipher);
byte[] buf = new byte[2048];
while (true) {
int n = input.read(buf, 0, buf.length);
if (n < 0)
break;
cos.write(buf, 0, n);
}
cos.flush();
Nerede JSP alan düz metin şifreli edilecek? Nasıl JSP (IV dahil) çıkışını biçimlendirmek istiyor musunuz?