4 Ocak 2021 Pazartesi

Blowfish

Örnek
Elimizde şöyle bir kod olsun
// random blowfish 256 key
byte[] key = new byte[32];
SecureRandom secureRandom = new SecureRandom();
secureRandom.nextBytes(key);


// random iv
byte[] iv = new byte[8]; // blowfish iv is 8 bytes long
secureRandom.nextBytes(iv);
Bir dosyayı okuyup başka dosyaya şifrelenmiş olarak yazmak için şöyle yaparız
public static boolean encryptCbcFileBufferedCipherOutputStream(String inputFilename,
String outputFilename, byte[] key, byte[] iv)
throws IOException, NoSuchPaddingException, NoSuchAlgorithmException, InvalidKeyException,
InvalidAlgorithmParameterException
{ Cipher cipher = Cipher.getInstance("Blowfish/CBC/PKCS5Padding"); try (FileInputStream in = new FileInputStream(inputFilename); FileOutputStream out = new FileOutputStream(outputFilename); CipherOutputStream encryptedOutputStream = new CipherOutputStream(out, cipher);) { out.write(iv); SecretKeySpec secretKeySpec = new SecretKeySpec(key, "Blowfish"); IvParameterSpec ivParameterSpec = new IvParameterSpec(iv); cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec, ivParameterSpec); byte[] buffer = new byte[8096]; int nread; while ((nread = in.read(buffer)) > 0) { encryptedOutputStream.write(buffer, 0, nread); } encryptedOutputStream.flush(); } }
Şifrelenmiş dosyayı okumak için şöyle yaparız
public static boolean decryptCbcFileBufferedCipherInputStream(String inputFilename,
String outputFilename, byte[] key)
throws IOException, NoSuchPaddingException, NoSuchAlgorithmException,
InvalidKeyException, InvalidAlgorithmParameterException
{ byte[] iv = new byte[8]; // blowfish iv is 8 bytes long Cipher cipher = Cipher.getInstance("Blowfish/CBC/PKCS5Padding"); try (FileInputStream in = new FileInputStream(inputFilename); CipherInputStream cipherInputStream = new CipherInputStream(in, cipher); FileOutputStream out = new FileOutputStream(outputFilename)) { byte[] buffer = new byte[8192]; in.read(iv); SecretKeySpec secretKeySpec = new SecretKeySpec(key, "Blowfish"); IvParameterSpec ivParameterSpec = new IvParameterSpec(iv); cipher.init(Cipher.DECRYPT_MODE, secretKeySpec, ivParameterSpec); int nread; while ((nread = cipherInputStream.read(buffer)) > 0) { out.write(buffer, 0, nread); } out.flush(); } }

Hiç yorum yok:

Yorum Gönder