基于密码口令的加密与解密,口令加密与解密,?package cn.
分享于 点击 43621 次 点评:277
基于密码口令的加密与解密,口令加密与解密,?package cn.
?package cn.itcast.gz;import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import javax.crypto.Cipher;import javax.crypto.SecretKey;import javax.crypto.SecretKeyFactory;import javax.crypto.spec.PBEKeySpec;import javax.crypto.spec.PBEParameterSpec;/** * * * * * * @author long * */public class PBEKeySpecTest { public static void main(String[] args) throws Exception { Myencrypt(); Mydecryption(); } /** * * @throws Exception */ public static void Myencrypt() throws Exception { //PBEWithMD5AndDES Cipher cipher = Cipher.getInstance("PBEWithMD5AndDES"); // PBEParameterSpec parameterSpec = new PBEParameterSpec(new byte[] { 1, 2, 3, 4, 5, 6, 7, 8 }, 9); // SecretKey key = SecretKeyFactory.getInstance("PBEWithMD5AndDES") .generateSecret(new PBEKeySpec("123456789".toCharArray())); //Cipher cipher.init(Cipher.ENCRYPT_MODE, key, parameterSpec); // byte[] result = cipher.doFinal("aaaa".getBytes()); // ObjectOutputStream objectOutputStream = new ObjectOutputStream( new FileOutputStream(new File("F://xxx.key"))); objectOutputStream.writeObject(key); // FileOutputStream outputStream = new FileOutputStream(new File( "F://xxx.data")); outputStream.write(result); } /** * * @throws Exception */ public static void Mydecryption() throws Exception { Cipher cipher = Cipher.getInstance("PBEWithMD5AndDES"); PBEParameterSpec parameterSpec = new PBEParameterSpec(new byte[] { 1, 2, 3, 4, 5, 6, 7, 8 }, 9); // key ObjectInputStream objectInputStream = new ObjectInputStream( new FileInputStream(new File("F://xxx.key"))); SecretKey key = (SecretKey) objectInputStream.readObject(); cipher.init(Cipher.DECRYPT_MODE, key, parameterSpec); // FileInputStream fileInputStream = new FileInputStream(new File( "F://xxx.data")); //ByteArrayOutputStream ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int len = 0; while ((len = fileInputStream.read(buffer)) != -1) { outputStream.write(buffer, 0, len); } fileInputStream.close(); // byte[] data = cipher.doFinal(outputStream.toByteArray()); outputStream.close(); System.out.println(new String(data)); }}//该片段来自于http://byrx.net
用户点评