java使用AES加密和解密代码示例详解编程语言

java使用AES加密和解密代码示例详解编程语言

java使用AES加密和解密代码示例源码:

import java.io.UnsupportedEncodingException;

import java.security.InvalidKeyException;

import java.security.NoSuchAlgorithmException;

import java.security.SecureRandom;

import javax.crypto.BadPaddingException;

import javax.crypto.Cipher;

import javax.crypto.IllegalBlockSizeException;

import javax.crypto.KeyGenerator;

import javax.crypto.NoSuchPaddingException;

import javax.crypto.SecretKey;

import javax.crypto.spec.SecretKeySpec;

public class TestAES {

    public static void main(String[] args) {

        String content = “testAES”;

        String password = “testAES”;

        System.out.println(“密 钥:” + password);

        System.out.println(“加密前:” + content);

        // 加密

        String encryptResult = encrypt(content, password);

        System.out.println(“加密后:” + encryptResult);

        // 解密

        String decryptResult = decrypt(encryptResult, password);

        System.out.println(“解密后:” + decryptResult);

    }

 

    /**

     * 加密

     */

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

        try {

            KeyGenerator kgen = KeyGenerator.getInstance(“AES”);

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

            SecretKey secretKey = kgen.generateKey();

            byte[] enCodeFormat = secretKey.getEncoded();

            SecretKeySpec secretKeySpec = new SecretKeySpec(enCodeFormat, “AES”);

            Cipher cipher = Cipher.getInstance(“AES”);

            byte[] byteContent = content.getBytes(“utf-8”);

            cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);

            byte[] byteRresult = cipher.doFinal(byteContent);

            StringBuffer sb = new StringBuffer();

            for (int i = 0; i < byteRresult.length; i++) {

                String hex = Integer.toHexString(byteRresult[i] & 0xFF);

                if (hex.length() == 1) {

                    hex = ‘0’ + hex;

                }

                sb.append(hex.toUpperCase());

            }

            return sb.toString();

        } catch (NoSuchAlgorithmException e) {

            e.printStackTrace();

        } catch (NoSuchPaddingException e) {

            e.printStackTrace();

        } catch (InvalidKeyException e) {

            e.printStackTrace();

        } catch (UnsupportedEncodingException e) {

            e.printStackTrace();

        } catch (IllegalBlockSizeException e) {

            e.printStackTrace();

        } catch (BadPaddingException e) {

            e.printStackTrace();

        }

        return null;

    }

 

    /**

     * 解密

     */

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

        if (content.length() < 1)

            return null;

        byte[] byteRresult = new byte[content.length() / 2];

        for (int i = 0; i < content.length() / 2; i++) {

            int high = Integer.parseInt(content.substring(i * 2, i * 2 + 1), 16);

            int low = Integer.parseInt(content.substring(i * 2 + 1, i * 2 + 2), 16);

            byteRresult[i] = (byte) (high * 16 + low);

        }

        try {

            KeyGenerator kgen = KeyGenerator.getInstance(“AES”);

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

            SecretKey secretKey = kgen.generateKey();

            byte[] enCodeFormat = secretKey.getEncoded();

            SecretKeySpec secretKeySpec = new SecretKeySpec(enCodeFormat, “AES”);

            Cipher cipher = Cipher.getInstance(“AES”);

            cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);

            byte[] result = cipher.doFinal(byteRresult);

            return new String(result);

        } catch (NoSuchAlgorithmException e) {

            e.printStackTrace();

        } catch (NoSuchPaddingException e) {

            e.printStackTrace();

        } catch (InvalidKeyException e) {

            e.printStackTrace();

        } catch (IllegalBlockSizeException e) {

            e.printStackTrace();

        } catch (BadPaddingException e) {

            e.printStackTrace();

        }

        return null;

    }

}

运行结果:

密 钥:testAES

加密前:testAES

加密后:24C2584138719D77C4FEBDE382D84648

解密后:testAES

java使用AES加密和解密代码示例详解编程语言

转载请注明来源网站:blog.ytso.com谢谢!

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/14723.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论