美文网首页百宝箱
对称加密算法AES

对称加密算法AES

作者: 离别刀 | 来源:发表于2018-05-28 15:39 被阅读29次
608151106.png

AES(Advanced Encryption Standard),高级加密标准,对称算法,是下一代的加密算法标准,速度快,安全级别高,在21世纪AES 标准的一个实现是 Rijndael 算法;
AES加密算法是密码学中的高级加密标准,该加密算法采用对称分组密码体制,密钥长度的最少支持为128、192、256,分组长度128位,算法应易于各种硬件和软件实现。这种加密算法是美国联邦政府采用的区块加密标准,这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。
它适用于敏感内容进行加密传输,防止被窃取。

public class AESUtil {
    private static String AES= "AES";
    private static final String defaultCharset= "utf-8";

    public static class Factory{
        //此方法可以被改写,定义自己的密钥生成策略
        public static String genKey(){
            try {
                KeyGenerator  keyGenerator= KeyGenerator.getInstance(AES);
                keyGenerator.init(128);
                SecretKey secretKey= keyGenerator.generateKey();
                return parseByte2HexStr(secretKey.getEncoded());
            } catch (NoSuchAlgorithmException e) {
                e.printStackTrace();
            }
            throw new RuntimeException("generate AES key error.");
        }
    }

    public static String enAES(String data,String key){
        try {
            Cipher cipher = Cipher.getInstance(AES);
            byte[] byteContent = data.getBytes("utf-8");
            cipher.init(Cipher.ENCRYPT_MODE, getSecretKey(key));
            byte[] result = cipher.doFinal(byteContent);
            return new String(Base64.getEncoder().encode(result));
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        throw new RuntimeException("enAES error.");
    }

    public static String deAES(String data,String key){
        try {
            Cipher cipher = Cipher.getInstance(AES);
            cipher.init(Cipher.DECRYPT_MODE, getSecretKey(key));
            byte[] result = cipher.doFinal(Base64.getDecoder().decode(data.getBytes(defaultCharset)));
            return new String(result, "utf-8");
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        throw new RuntimeException("deAES error.");
    }

    /**
     * 二进制转16进制
     * @param bytes
     * @return
     */
    private static String parseByte2HexStr(byte[] bytes){
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < bytes.length; i++) {
            String hex = Integer.toHexString(bytes[i] & 0xFF);
            if (hex.length() == 1) {
                hex = '0' + hex;
            }
            sb.append(hex.toUpperCase());
        }
        return sb.toString();
    }

    private static SecretKeySpec getSecretKey(final String password) {
        try {
            KeyGenerator kg = KeyGenerator.getInstance(AES);
            //AES 要求密钥长度为 128
            kg.init(128, new SecureRandom(password.getBytes()));
            SecretKey secretKey = kg.generateKey();
            return new SecretKeySpec(secretKey.getEncoded(), AES);
        } catch (NoSuchAlgorithmException ex) {
            ex.printStackTrace();
        }
        throw new RuntimeException("getSecretKey error.");
    }

    public static void main(String[] args) {
        String key= Factory.genKey();
        System.out.println("key: "+key);
        String wl= "{welcome to 中国.}";
        String ens= enAES(wl,key);
        System.out.println("after enAES: "+ens);
        String des= deAES(ens,key);
        System.out.println("after deAES: "+des);
    }
}

相关文章

  • Java 加密算法

    一、消息摘要算法 二、Base64 对称加密算法 三、Des 对称加密算法 四、Aes 对称加密算法 五、Pbe ...

  • Android 拿到私钥字符串对目标字符串进行加密

    关于加密算法 分为对称和非对称加密算法,其中RSA是常用非对称加密算法。对称加密中AES高级加密标准使用Rijnd...

  • # iOS进阶 # 常用加密算法和网络安全问题的了解

    iOS中的加密算法 对称加密算法AES算法 AES加密算法涉及4种操作:字节替代(SubBytes)、行移位(Sh...

  • Android中AES加密算法

    Android中AES的使用常见的加密算法大致有两种,一种是对称加密算法如AES,另一种是非对称加密算法如RSA。...

  • GoLang AES GSM

    以太坊Whisper协议中,默认的对称加密使用的是AES-GCM加密算法。 AES是一种对称加密算法,它的相关概念...

  • AES加密算法介绍及py实现

    AES简介 高级加密标准AES(Advanced Encrpytion Standard)为最常见的加密算法。对称...

  • 对称加密之-AES加密

    AES简介 高级加密标准(AES,Advanced Encryption Standard)为最常见的对称加密算法...

  • 史上最详HTTPS加密解析

    一、概念 加密类型 1、对称加密,如:常见的AES 加密算法 2、非对称加密,如:常见的RSA 加密算法 对称加密...

  • JAVA实现对称加密

    对称加密算法 加密密钥 = 解密密钥(完全对称的) 初等加密算法 DES3DES AES PBE IDEA 对称加...

  • AES 加密算法基本原理

    AES 是Advanced Encryption Standard 的缩写,是最常见的对称加密算法。AES 在密码...

网友评论

    本文标题:对称加密算法AES

    本文链接:https://www.haomeiwen.com/subject/assgjftx.html