Java文件加密-spring属性文件加密

2012-11-12

  package com.happy.security.properties;

  import java.io.ByteArrayInputStream;

  import java.io.ByteArrayOutputStream;

  import java.io.File;

  import java.io.FileInputStream;

  import java.io.FileOutputStream;

  import java.io.InputStream;

  import java.io.ObjectInputStream;

  import java.io.ObjectOutputStream;

  import java.security.Key;

  import java.security.NoSuchAlgorithmException;

  import java.security.SecureRandom;

  import java.security.Security;

  import javax.crypto.Cipher;

  import javax.crypto.KeyGenerator;

  public class DESEncryptUtil {

  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);

  }

  }

  private static byte[] doEncrypt(Key key, byte[] data) {//对数据进行加密?

  try {

  Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");

  cipher.init(Cipher.ENCRYPT_MODE, key);

  byte[] raw = cipher.doFinal(data);

  return raw;

  } catch (Exception e) {

  e.printStackTrace();

  throw new RuntimeException(e);

  }

  }

  public static InputStream doDecrypt(Key key, InputStream in) {//对数据进行解密?

  try {

  Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");

  cipher.init(Cipher.DECRYPT_MODE, key);

  ByteArrayOutputStream bout = new ByteArrayOutputStream();

  byte[] tmpbuf = new byte[1024];

  int count = 0;

  while ((count = in.read(tmpbuf)) != -1) {

  bout.write(tmpbuf, 0, count);

  tmpbuf = new byte[1024];

  }

  in.close();

  byte[] orgData = bout.toByteArray();

  byte[] raw = cipher.doFinal(orgData);

  ByteArrayInputStream bin = new ByteArrayInputStream(raw);

  return bin;

  } catch (Exception e){

  e.printStackTrace();

  throw new RuntimeException(e);

  }

  }

分享到:
0
相关阅读
友情链接
© 2018 我考网 http://www.woexam.com 中国互联网举报中心 湘ICP备18023104号 京公网安备 11010802020116号
违法和不良信息举报:9447029@qq.com