Java笔记-对称加密AES的使用

Posted IT1995

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java笔记-对称加密AES的使用相关的知识,希望对你有一定的参考价值。

AES加密库的使用:

    ·根据AES密钥创建Secret密钥向量;

    ·生成初始化参数向量;

    ·获取AES Cipher;

    ·执行加密;

    ·Base64编码(建议)

程序运行截图如下:

 调用如下:

public static void main(String[] args) throws UnsupportedEncodingException {

    String content = "123456";
    AES aes = new AES();
    byte[] encrypted = aes.encrypt(content);
    System.out.println(new String(encrypted));
    ......
    ......
}

AES.java

package cn.it1995.tool;

import javax.crypto.*;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;

//AES没有公钥和私钥之分
public class AES {

    private SecretKey mKey;

    public AES(){

        try {

            KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
            //创建随机密码,并设置种子
            SecureRandom secureRandom = new SecureRandom();
            secureRandom.setSeed(System.currentTimeMillis());

            //初始化密钥对象
            keyGenerator.init(128, secureRandom);
            mKey = keyGenerator.generateKey();
        }
        catch (NoSuchAlgorithmException e) {

            e.printStackTrace();
        }
    }

    public byte[] encrypt(String content){

        if(mKey == null){

            return new byte[]{-1};
        }

        try {

            Cipher cipher = Cipher.getInstance("AES");
            cipher.init(Cipher.ENCRYPT_MODE, mKey);
            return cipher.doFinal(content.getBytes());
        }
        catch (NoSuchAlgorithmException e) {

            e.printStackTrace();
        }
        catch (NoSuchPaddingException e) {

            e.printStackTrace();
        }
        catch (BadPaddingException e) {

            e.printStackTrace();
        }
        catch (IllegalBlockSizeException e) {

            e.printStackTrace();
        }
        catch (InvalidKeyException e) {

            e.printStackTrace();
        }

        return new byte[]{-1};
    }

    public byte[] decrypt(byte[] content){

        if(mKey == null){

            return new byte[]{-1};
        }

        try {

            Cipher cipher = Cipher.getInstance("AES");
            cipher.init(Cipher.DECRYPT_MODE, mKey);
            return cipher.doFinal(content);
        }
        catch (NoSuchAlgorithmException e) {

            e.printStackTrace();
        }
        catch (NoSuchPaddingException e) {

            e.printStackTrace();
        }
        catch (BadPaddingException e) {

            e.printStackTrace();
        }
        catch (IllegalBlockSizeException e) {

            e.printStackTrace();
        }
        catch (InvalidKeyException e) {

            e.printStackTrace();
        }

        return new byte[]{-1};
    }
}

以上是关于Java笔记-对称加密AES的使用的主要内容,如果未能解决你的问题,请参考以下文章

[译] 最佳安全实践:在 Java 和 Android 中使用 AES 进行对称加密

正确使用AES对称加密

正确使用AES对称加密

Java对称与非对称加密解密,AES与RSA

Java 加密解密 对称加密算法 非对称加密算法 MD5 BASE64 AES RSA

java AES加密