Java AES加密

来源:互联网 发布:js改变浏览器窗口大小 编辑:程序博客网 时间:2024/05/16 13:05
package com.dataservice.utils.crypto;import java.security.InvalidAlgorithmParameterException;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;import javax.crypto.spec.IvParameterSpec;import javax.crypto.spec.SecretKeySpec;/** *  * Aes 加解密 * */public class AesUtils {    public static final String KEY_ALGORITHM = "AES";    public static final String CIPHER_ALGORITHM = "AES/CBC/PKCS5Padding";    private static Key toKey(byte[] key) {        SecretKey secretKey = new SecretKeySpec(key, KEY_ALGORITHM);        return secretKey;    }    public static byte[] generateKey() throws NoSuchAlgorithmException {        KeyGenerator keyGenerator = KeyGenerator.getInstance(KEY_ALGORITHM);        keyGenerator.init(128);        SecretKey secretKey = keyGenerator.generateKey();        return secretKey.getEncoded();    }    /**     *      * @param data     * @param key     * @param salt     * @return     * @throws NoSuchAlgorithmException     * @throws NoSuchPaddingException     * @throws InvalidKeyException     * @throws IllegalBlockSizeException     * @throws BadPaddingException     * @throws InvalidAlgorithmParameterException     */    public static byte[] encrypt(byte[] data, byte[] key, String salt) throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException, InvalidAlgorithmParameterException {        Key k = toKey(key);        Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM);        cipher.init(Cipher.ENCRYPT_MODE, k, initIvParameterSpec(salt));        return cipher.doFinal(data);    }    /**     *      * @param data     * @param key     * @param salt     * @return     * @throws NoSuchAlgorithmException     * @throws NoSuchPaddingException     * @throws InvalidKeyException     * @throws IllegalBlockSizeException     * @throws BadPaddingException     * @throws InvalidAlgorithmParameterException     */    public static byte[] dencrypt(byte[] data, byte[] key, String salt) throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException, InvalidAlgorithmParameterException {        Key k = toKey(key);        Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM);        cipher.init(Cipher.DECRYPT_MODE, k, initIvParameterSpec(salt));        return cipher.doFinal(data);    }    public static IvParameterSpec initIvParameterSpec(String salt) {        return new IvParameterSpec(String.format("%16s", salt).getBytes());    }}
原创粉丝点击