JAVA实现AES加解密

高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一。

timg (2).jpg

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 javax.crypto.spec.IvParameterSpec;
public class Aes
{  private String charset="UTF-8";
   private static final String KEY_ALGORITHM = "AES";
   private static final String CIPHER_ALGORITHM = "AES/CBC/PKCS5Padding";
   private static final String IV = "abcdefghijklmn";
	public Aes()
	{
	}

	public byte[] encode(byte[] data,String rules)
	{byte[] res=null;
	   try {
            KeyGenerator keygen=KeyGenerator.getInstance(KEY_ALGORITHM);
            keygen.init(128, new SecureRandom(rules.getBytes(this.charset)));
            SecretKey original_key=keygen.generateKey();
            byte [] raw=original_key.getEncoded();
            SecretKey key=new SecretKeySpec(raw, KEY_ALGORITHM);
            Cipher cipher=Cipher.getInstance(CIPHER_ALGORITHM);
            cipher.init(Cipher.ENCRYPT_MODE, key,new IvParameterSpec(IV.getBytes(this.charset)));
            byte [] byte_AES=cipher.doFinal(data);
            res=byte_AES;
        } catch (Exception e) {
            res=e.toString().getBytes();
        }
	 return res;
	}

	public byte[] decode(byte[] endata,String rules)
	{byte[] res=null;
	 try {
            KeyGenerator keygen=KeyGenerator.getInstance(KEY_ALGORITHM);
            keygen.init(128, new SecureRandom(rules.getBytes(this.charset)));
            SecretKey original_key=keygen.generateKey();
            byte [] raw=original_key.getEncoded();
            SecretKey key=new SecretKeySpec(raw, KEY_ALGORITHM);
            Cipher cipher=Cipher.getInstance(CIPHER_ALGORITHM);
            cipher.init(Cipher.DECRYPT_MODE, key,new IvParameterSpec(IV.getBytes(this.charset)));
             res=cipher.doFinal(endata);
      
        } catch (Exception e) {
            res=e.toString().getBytes();
        }
	 return res;
	}

	
}