JAVA AES 加密 亲测可用

废话不多说直接上代码!! 这个看不懂的就不用学java 了!

package com.pinnacle;

import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;

import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.KeyGenerator;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;

import org.apache.commons.codec.binary.Base64;

public class AesTest {

    /**
     * 将byte数组转化成为16进制输出
     * @param bytes
     * @return
     */
    public static String converByteToHexString(byte[] bytes) {
        String result="";
        for(int i=0;i             int temp=bytes[i] &0xff;
            String tempHex =Integer.toHexString(temp);
            if(tempHex.length()<2) {
                result+="0"+tempHex;
            }else {
                result+=tempHex;
            }
        }
        return result;
    }
    
    /**
     * AES加密算法
     * @param message
     * @param password
     * @return
     * @throws Exception
     */
    public static byte[] AESJDKEncode(String message,String password)  {
        try {
            KeyGenerator kgen=KeyGenerator.getInstance("AES");//实例化一个用AES加密算法的密钥生成器               
            kgen.init(128,new SecureRandom(password.getBytes()));//使用用户提供的password初始化此密钥生成器,使其具有确定的密钥大小128字节长。
            SecretKey secreKey=kgen.generateKey();//生成一个密钥。    
            byte[] enCodeFormat=secreKey.getEncoded();//返回基本编码格式的密钥,如果此密钥不支持编码,则返回 null。
            SecretKeySpec key=new SecretKeySpec(enCodeFormat, "AES");//根据给定的enCodeFormat字节数组构造一个用AES算法加密的密钥。
            Cipher cipher =Cipher.getInstance("AES");//创建密码器
            cipher.init(Cipher.ENCRYPT_MODE, key);//初始化  // 以加密的方式用密钥初始化此 Cipher。
            byte[] result=cipher.doFinal(message.getBytes());//按byteContent单部分操作加密指定的
            return result;//加密  返回加密过后的byteContent
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return null;
    }
    
    /**
     * AES解密算法
     * @param message
     * @param password
     * @return
     */
    public static byte[] AESJDKDecode(byte[]message,String password) {
        try {
            KeyGenerator kgen=KeyGenerator.getInstance("AES");
            kgen.init(128,new SecureRandom(password.getBytes()));
            SecretKey secreKey=kgen.generateKey();
            byte[] enCodeFormat=secreKey.getEncoded();
            SecretKeySpec key=new SecretKeySpec(enCodeFormat, "AES");
            Cipher cipher =Cipher.getInstance("AES");//创建密码器
            cipher.init(Cipher.DECRYPT_MODE, key);//初始化
            byte[] result=cipher.doFinal(message);
            return result;//解密
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return null;
    }
    
  
    public static void main(String[] args) {
        String content="123123123131";
        String password ="key";
        System.out.println("加密前的字符串为:"+content);
        byte[] encodeMessage=AESJDKEncode(content,password);//AES加密
        System.out.println("AES 加密后为 :"+converByteToHexString(encodeMessage));
        byte[] decodeMessage=AESJDKDecode(encodeMessage,password);
        System.out.println("AES 最终解密后为:"+new String(decodeMessage));*/
    }
    
}


你可能感兴趣的:(java编程中的问题)