AES加解密方法

import java.nio.charset.StandardCharsets;

import java.security.SecureRandom;

import javax.crypto.Cipher;

import javax.crypto.KeyGenerator;

import javax.crypto.SecretKey;

import javax.crypto.spec.SecretKeySpec;

public class AESHelper {

    /**

    * AES加密

    *

    * @param value 明文

    * @param key  密钥

    * @return 密文

    */

    public static String encrypt(String value, String key) {

        try {

            KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");

            keyGenerator.init(128, new SecureRandom(key.getBytes()));

            SecretKey secretKey = keyGenerator.generateKey();

            byte[] enCodeFormat = secretKey.getEncoded();

            SecretKeySpec keySpec = new SecretKeySpec(enCodeFormat, "AES");

            Cipher cipher = Cipher.getInstance("AES");

            cipher.init(Cipher.ENCRYPT_MODE, keySpec);

            return new String(cipher.doFinal(value.getBytes(StandardCharsets.UTF_8)), StandardCharsets.UTF_8);

        } catch (Exception e) {

            e.printStackTrace();

        }

        return null;

    }

    /**

    * AES解密

    *

    * @param value 密文

    * @param key  密钥

    * @return 明文

    */

    public static String decrypt(String value, String key) {

        try {

            KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");

            keyGenerator.init(128, new SecureRandom(key.getBytes()));

            SecretKey secretKey = keyGenerator.generateKey();

            byte[] enCodeFormat = secretKey.getEncoded();

            SecretKeySpec keySpec = new SecretKeySpec(enCodeFormat, "AES");

            Cipher cipher = Cipher.getInstance("AES");

            cipher.init(Cipher.DECRYPT_MODE, keySpec);

            return new String(cipher.doFinal(value.getBytes(StandardCharsets.UTF_8)), StandardCharsets.UTF_8);

        } catch (Exception e) {

            e.printStackTrace();

        }

        return null;

    }

}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. ASCII 编码 ASCII(American Standard Code for Information ...
    s酸菜阅读 8,875评论 0 8
  • 密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加...
    testfk6688阅读 2,998评论 0 0
  • 1、不安全的随机数生成,在CSRF TOKEN生成、password reset token生成等,会造成toke...
    nightmare丿阅读 4,000评论 0 1
  • 今天上午让做一个ase的加密,从网上找了好多都是支持windows的,在Linux下运行时解密时,总是出现报这个异...
    Easy的幸福阅读 1,731评论 0 3
  • 伴随着密码学,计算机技术,互联网络,商业,经济学,博弈论,金融,法律,社会学等多学科融合,BTC经过半个多世纪的孕...
    GatesZhangBTA阅读 149评论 0 0

友情链接更多精彩内容