Java Tutorial/Security/Cipher Stream

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

Using CipherInputStream

   <source lang="java">

import java.io.BufferedReader; import java.io.FileInputStream; import java.io.InputStreamReader; import java.io.ObjectInputStream; import javax.crypto.Cipher; import javax.crypto.CipherInputStream; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESKeySpec; import javax.crypto.spec.IvParameterSpec; public class MainClass {

 public static void main(String args[]) throws Exception {
   ObjectInputStream ois = new ObjectInputStream(new FileInputStream("keyfile"));
   DESKeySpec ks = new DESKeySpec((byte[]) ois.readObject());
   SecretKeyFactory skf = SecretKeyFactory.getInstance("DES");
   SecretKey key = skf.generateSecret(ks);
   Cipher c = Cipher.getInstance("DES/CFB8/NoPadding");
   c.init(Cipher.DECRYPT_MODE, key, new IvParameterSpec((byte[]) ois.readObject()));
   CipherInputStream cis = new CipherInputStream(new FileInputStream("ciphertext"), c);
   BufferedReader br = new BufferedReader(new InputStreamReader(cis));
   System.out.println(br.readLine());
 }

}</source>





Using CipherOutputStream

   <source lang="java">

import java.io.FileOutputStream; import java.io.ObjectOutputStream; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.security.SecureRandom; import javax.crypto.Cipher; import javax.crypto.CipherOutputStream; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESKeySpec; public class MainClass {

 public static void main(String args[]) throws Exception {
   KeyGenerator kg = KeyGenerator.getInstance("DES");
   kg.init(new SecureRandom());
   SecretKey key = kg.generateKey();
   SecretKeyFactory skf = SecretKeyFactory.getInstance("DES");
   Class spec = Class.forName("javax.crypto.spec.DESKeySpec");
   DESKeySpec ks = (DESKeySpec) skf.getKeySpec(key, spec);
   ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("keyfile"));
   oos.writeObject(ks.getKey());
   Cipher c = Cipher.getInstance("DES/CFB8/NoPadding");
   c.init(Cipher.ENCRYPT_MODE, key);
   CipherOutputStream cos = new CipherOutputStream(new FileOutputStream("ciphertext"), c);
   PrintWriter pw = new PrintWriter(new OutputStreamWriter(cos));
   pw.println("Stand and unfold yourself");
   pw.close();
   oos.writeObject(c.getIV());
   oos.close();
 }

}</source>