Java Tutorial/Security/Blowfish

Материал из Java эксперт
Перейти к: навигация, поиск

A Blowfish example

   <source lang="java">

import java.io.FileInputStream; import java.io.FileOutputStream; import java.security.Key; import javax.crypto.Cipher; import javax.crypto.CipherOutputStream; import javax.crypto.KeyGenerator; import sun.misc.BASE64Encoder; public final class MainClass {

 public static void main(String[] args) throws Exception {
   KeyGenerator keyGenerator = KeyGenerator.getInstance("Blowfish");
   keyGenerator.init(128);
   Key secretKey = keyGenerator.generateKey();
   Cipher cipherOut = Cipher.getInstance("Blowfish/CFB/NoPadding");
   cipherOut.init(Cipher.ENCRYPT_MODE, secretKey);
   BASE64Encoder encoder = new BASE64Encoder();
   byte iv[] = cipherOut.getIV();
   if (iv != null) {
     System.out.println("Initialization Vector of the Cipher:\n" + encoder.encode(iv));
   }
   FileInputStream fin = new FileInputStream("inputFile.txt");
   FileOutputStream fout = new FileOutputStream("outputFile.txt");
   CipherOutputStream cout = new CipherOutputStream(fout, cipherOut);
   int input = 0;
   while ((input = fin.read()) != -1) {
     cout.write(input);
   }
   fin.close();
   cout.close();
 }

}</source>





Create a Blowfish key, encrypts some text,prints the ciphertext, then decrypts the text

   <source lang="java">

import java.security.Key; import javax.crypto.Cipher; import javax.crypto.KeyGenerator; public class MainClass {

 public static void main(String[] args) throws Exception {
   String text = "jexp";
   KeyGenerator keyGenerator = KeyGenerator.getInstance("Blowfish");
   keyGenerator.init(128);
   Key key = keyGenerator.generateKey();
   Cipher cipher = Cipher.getInstance("Blowfish/ECB/PKCS5Padding");
   cipher.init(Cipher.ENCRYPT_MODE, key);
   byte[] ciphertext = cipher.doFinal(text.getBytes("UTF8"));
   for (int i = 0; i < ciphertext.length; i++) {
     System.out.print(ciphertext[i] + " ");
   }
   cipher.init(Cipher.DECRYPT_MODE, key);
   byte[] decryptedText = cipher.doFinal(ciphertext);
   System.out.println(new String(decryptedText, "UTF8"));
 }

} //-126 -104 127 -75 -34 -71 -94 -96 jexp</source>





Generate a Blowfish key

   <source lang="java">

import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; public class MainClass {

 public static void main(String[] args) throws Exception {
   KeyGenerator keyGenerator = KeyGenerator.getInstance("Blowfish");
   keyGenerator.init(128);
   SecretKey key = keyGenerator.generateKey();
   Cipher cipher = Cipher.getInstance("Blowfish/ECB/PKCS5Padding");
   cipher.init(Cipher.ENCRYPT_MODE, key);
   
   byte[] cipherText = cipher.doFinal("This is a test.".getBytes("UTF8"));
   
   System.out.println(new String(cipherText));
 }

}</source>