AES加密解密->java实现

前言

本篇是继DES加密解密涉及到的JAVA类 之后进一步利用java这门编程语言实现AES加密解密。

涉及到的java类

代码中部分涉及到的java类已在上篇DES加密解密涉及到的JAVA类 中贴出一些帮助文档中的内容,下面介绍没有涉及到的java类,主要是在秘钥的生成上。AES加密解密使用的是SecretKeySpec类。

SecretKeySpec

AES加密解密->java实现_第1张图片
AES加密解密->java实现_第2张图片

实现类AESEncryptTools

package com.david.aes;

import java.security.SecureRandom;
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;

/** * * 项目名称:CipherTest * 类 名 称:AESEncryptTools * 类 描 述:AES加密解密算法 * 创 建 人:david * 创建时间:2016年5月2日 下午8:00:21 * Copyright (c) david-版权所有 */
public final class AESEncryptTools {

    //加密算是是AES
    private static final String ALGORITHM = "AES";
    //转换格式
    private static final String TRANSFORMATION = "AES/ECB/PKCS5Padding";

    //利用16个字节128位的key给src加密
    @SuppressWarnings("unused")
    public static byte[] encrypt(byte[] src,byte[]key)
    {
        try {
            //加密
            Cipher cipher = Cipher.getInstance(TRANSFORMATION);
            SecretKeySpec keySpec = new SecretKeySpec(key,ALGORITHM);
            cipher.init(Cipher.ENCRYPT_MODE, keySpec,new SecureRandom());
            byte[] enMsgBytes = cipher.doFinal(src);    
            return enMsgBytes;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    //利用16个字节128位的key给src解密
    @SuppressWarnings("unused")
    public static byte[] decrypt(byte[] encryptBytes,byte[]key){
        try {
            //解密
            Cipher deCipher = Cipher.getInstance(TRANSFORMATION);
            SecretKeySpec keySpec = new SecretKeySpec(key,ALGORITHM);
            deCipher.init(Cipher.DECRYPT_MODE, keySpec,new SecureRandom());
            byte[] deMsgBytes = deCipher.doFinal(encryptBytes);
            return deMsgBytes;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
}

测试类

package com.david.aes;

public class AesMainTest {

    private static String key = "1234567887654321";

    public static void main(String[] args) throws Exception{
        String msg = "hello world. 你好,DES";
        System.out.println("加密前:"+msg);
        byte[] encryptBytes = AESEncryptTools.encrypt(msg.getBytes(),key.getBytes());
        System.out.println("加密后:"+new String(encryptBytes));
        byte[] deMsgBytes = AESEncryptTools.decrypt(encryptBytes,key.getBytes());
        System.out.println("解密后:"+new String(deMsgBytes));
    }
}

测试结果

AES加密解密->java实现_第3张图片

总结

学习了一下AES加密解密算法!

你可能感兴趣的:(java,加密,解密,aes)