读书人

java保险2

发布时间: 2012-09-09 09:27:54 作者: rapoo

java安全2

package com.ngsn.security;import java.io.ByteArrayOutputStream;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.security.InvalidKeyException;import java.security.Key;import java.security.NoSuchAlgorithmException;import javax.crypto.BadPaddingException;import javax.crypto.Cipher;import javax.crypto.IllegalBlockSizeException;import javax.crypto.KeyGenerator;import javax.crypto.NoSuchPaddingException;import javax.crypto.SecretKey;/** * 对称加密(加密解密的密钥一样) * @author John.Yao * */public class SecretKeyTest1 {public static void main(String[] args) throws Exception{//SecretEncrypt();SecretDecrypt();}/** * 加密方法 * 将加密的密钥保存在zxx_secret.key文件中 * 将加密的数据保存在zxx.data文件中 * @throws Exception */private static void SecretEncrypt() throws Exception{//Cipher  此类为加密和解密提供密码功能Cipher cipher = Cipher.getInstance("AES");//根据AES的加密方法生成一个密钥SecretKey key = KeyGenerator.getInstance("AES").generateKey();FileOutputStream fosKey = new FileOutputStream("zxx_secret.key");ObjectOutputStream oosSecretKey = new ObjectOutputStream(fosKey);//将密钥保存到zxx_secret.key文件中oosSecretKey.writeObject(key);oosSecretKey.close();fosKey.close();//初始化//Cipher.ENCRYPT_MODE 为加密模式//key 为加密的密钥cipher.init(Cipher.ENCRYPT_MODE,key);//对byte[] 进行加密,返回一个加密后的byte[]byte[] result = cipher.doFinal("abc".getBytes());System.out.println("result----->"+new String(result));FileOutputStream fosData = new FileOutputStream("zxx.data");fosData.write(result);fosData.close();}/** * 解密方法 * @throws Exception */private static void SecretDecrypt()throws Exception{//Cipher  此类为加密和解密提供密码功能Cipher cipher = Cipher.getInstance("AES");//从zxx_secret.key文件中得到keyFileInputStream fisKey = new FileInputStream("zxx_secret.key");ObjectInputStream ois = new ObjectInputStream(fisKey);Key key = (Key)ois.readObject();ois.close();fisKey.close();//解密//初始化cipher.init(Cipher.DECRYPT_MODE, key);//从zxx.data文件中得到加密的数据FileInputStream fis = new FileInputStream("zxx.data");byte[] buffer = new byte[1024];int len = 0;ByteArrayOutputStream bos = new ByteArrayOutputStream();while((len = fis.read(buffer)) != -1){bos.write(buffer, 0, len);}//从输出流中得到byte[]的加密数据byte[] result = bos.toByteArray();fis.close();bos.close();//对加密的数据进行解密byte[] b = cipher.doFinal(result);System.out.println("b------>"+new String(b));}}

读书人网 >Web前端

热点推荐