AESUtil AES加密工具类

来源:互联网 发布:种植牙失败知乎 编辑:程序博客网 时间:2024/06/05 17:15

AES加密工具类,其中导入的jar包jdk引进去就可以用了,jdk的版本尽量大于1.5

package com.yiyong.mavenspring.demo.util;/**    * @Title: AESUtil.java  * @Package com.yiyong.mavenspring.demo.util  * @Description: TODO(用一句话描述该文件做什么)  * @author Yiyong Wu * @date 2015年12月29日 下午2:38:00  * @version V1.0    */import java.security.NoSuchAlgorithmException;import java.security.SecureRandom;import javax.crypto.Cipher;import javax.crypto.KeyGenerator;import javax.crypto.SecretKey;import javax.crypto.spec.SecretKeySpec;public class AESUtil {public static void main(String[] args) {// 密钥的种子,可以是任何形式,本质是字节数组String strKey = "lttclaw";// 密钥数据byte[] rawKey = getRawKey(strKey.getBytes());// 密码的明文String clearPwd = "My world is full of wonders! No body can match my spirit";// 密码加密后的密文byte[] encryptedByteArr = encrypt(rawKey, clearPwd);String encryptedPwd = new String(encryptedByteArr);System.out.println(encryptedPwd);// 解密后的字符串String decryptedPwd = decrypt(encryptedByteArr, rawKey);System.out.println(decryptedPwd);}/** * @param rawKey *            密钥 * @param clearPwd *            明文字符串 * @return 密文字节数组 */private static byte[] encrypt(byte[] rawKey, String clearPwd) {try {SecretKeySpec secretKeySpec = new SecretKeySpec(rawKey, "AES");Cipher cipher = Cipher.getInstance("AES");cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);byte[] encypted = cipher.doFinal(clearPwd.getBytes());return encypted;} catch (Exception e) {return null;}}/** * @param encrypted *            密文字节数组 * @param rawKey *            密钥 * @return 解密后的字符串 */private static String decrypt(byte[] encrypted, byte[] rawKey) {try {SecretKeySpec secretKeySpec = new SecretKeySpec(rawKey, "AES");Cipher cipher = Cipher.getInstance("AES");cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);byte[] decrypted = cipher.doFinal(encrypted);return new String(decrypted);} catch (Exception e) {return "";}}/** * @param seed种子数据 * @return 密钥数据 */private static byte[] getRawKey(byte[] seed) {byte[] rawKey = null;try {KeyGenerator kgen = KeyGenerator.getInstance("AES");SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG");secureRandom.setSeed(seed);// AES加密数据块分组长度必须为128比特,密钥长度可以是128比特、192比特、256比特中的任意一个kgen.init(128, secureRandom);SecretKey secretKey = kgen.generateKey();rawKey = secretKey.getEncoded();} catch (NoSuchAlgorithmException e) {}return rawKey;}}


3 0
原创粉丝点击