欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java中常用的加密以及AES加密的使用

程序员文章站 2024-03-14 14:55:16
...

Java中常用的加密有哪些?

AES:更快,兼容设备,安全级别高;

SHA1:公钥后处理回传

DES:本地数据,安全级别低

RSA:非对称加密,有公钥和私钥

MD5:防篡改

介绍其中一种AES对数据进行加密

/**
 * <p>
 * Title: AES加密
 * </p>
 * <p>
 * Description:使用AES进行加减密
 * </p>
 * 
 * @author zyh
 * @date 2019/03/11
 */
public class AESTest {

    static final String ALGORITHM = "AES";
    final static String charsetName = "UTF-8";
    static Charset charset = Charset.forName(charsetName);

    // 加密解密需要key,所以需要一个生成key的函数
    public static SecretKey generateKey() throws NoSuchAlgorithmException {
        KeyGenerator keyGenerator = KeyGenerator.getInstance(ALGORITHM);
        // Random是一个伪随机数,他是根据日期和时间来产生随机数的,不安全
        SecureRandom secureRandom = new SecureRandom();
        // 对keyGenerator进行初始化
        keyGenerator.init(secureRandom);
        // 然后我们开始生成key
        SecretKey secretKey = keyGenerator.generateKey();
        return secretKey;
    }

    // 加密函数,加密之后的字节数组
    public static byte[] encrypt(String connet, SecretKey secretKey) throws Exception {

        return aes(connet.getBytes(charset), Cipher.ENCRYPT_MODE, secretKey);

    }

    // 解密函数,返回一个解密之后的字符串
    public static String decrypt(byte[] contentArray, SecretKey secretKey) throws Exception {
        byte[] result = aes(contentArray, Cipher.DECRYPT_MODE, secretKey);
        return new String(result, charsetName);

    }

    // 在java中加密和减秘的唯一区别是模式不同,所以在这写个aes函数
    private static byte[] aes(byte[] contentArray, int mode, SecretKey secretKey) throws Exception {
        Cipher cipher = Cipher.getInstance(ALGORITHM);
        cipher.init(mode, secretKey);
        // 处理数据比较小用doFinal,要是处理数据比较多要先循环执行update最后执行doFinal
        byte[] result = cipher.doFinal(contentArray);
        return result;

    }

    public static void main(String[] args) {
        String content = "这里是需要加密的数据";
        try {
            SecretKey secretKey = generateKey();
            byte[] encryptResult = encrypt(content, secretKey);
            System.out.println("加密后的结果为:" + new String(encryptResult, charsetName));
            String decryptResult = decrypt(encryptResult, secretKey);
            System.out.println("解密后的结果为:" + decryptResult);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

相关标签: Java 加密处理

上一篇: DES代码讲解

下一篇: