작은 코드 JAVA 파일 암호 화(DES 3)

package com.cit.webservice;

import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.OutputStream;
import java.security.InvalidKeyException;
import java.security.Key;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.security.Security;

import javax.crypto.Cipher;
import javax.crypto.CipherInputStream;
import javax.crypto.CipherOutputStream;
import javax.crypto.KeyGenerator;
import javax.crypto.NoSuchPaddingException;

public class DESCipherUtil {
	public static Key createKey() throws NoSuchAlgorithmException {//     

		Security.insertProviderAt(new com.sun.crypto.provider.SunJCE(), 1);

		KeyGenerator generator = KeyGenerator.getInstance("DES");

		generator.init(new SecureRandom());

		Key key = generator.generateKey();

		return key;

	}
	public static Key getKey(InputStream is) {
		try {
			ObjectInputStream ois = new ObjectInputStream(is);
			return (Key) ois.readObject();
		} catch (Exception e) {
			e.printStackTrace();
			throw new RuntimeException(e);
		}
	}

	public static  Cipher  getCipher(Key key,int mode) throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException{
		 Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
		 cipher.init(mode, key);
		 System.out.println(mode);
		 return cipher;
	 }
	public static void decrypt(InputStream  is ,OutputStream os, Key key) throws IOException, InvalidKeyException, NoSuchAlgorithmException, NoSuchPaddingException{ 
		byte[]  buff = new byte[1024];
		int count = 0;
		CipherInputStream  cis  = new CipherInputStream(is,getCipher(key,Cipher.DECRYPT_MODE));		
		while ((count = cis.read( buff))  >=0) {
			os.write( buff, 0, count);
		}
		cis.close();	 
		os.flush();
 
	}
	public static void encrypt(InputStream  is ,OutputStream os, Key key) throws IOException, InvalidKeyException, NoSuchAlgorithmException, NoSuchPaddingException{		 		
		byte[] buff = new byte[1024];
		int count = 0;
		CipherOutputStream  cos  = new CipherOutputStream(os,getCipher(key,Cipher.ENCRYPT_MODE));		
		while ((count = is.read(buff)) >=0) {
		  cos.write(buff, 0, count);
		}		 
		cos.flush();
		cos.close(); 
	}
}

좋은 웹페이지 즐겨찾기