java 对称加密

Posted 月下诗

tags:

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

DSE

package com.aarony.test;

import java.io.IOException;
import java.security.NoSuchAlgorithmException;

import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

/**
 * 
 * 此类描述的是:对称加密
 * 
 * @author: Aarony
 * @version: 2018年6月20日 下午9:20:34
 */
public class SymmetricEncryptionDESDemo {

    /**
     * 
     * 此方法描述的是: 解密
     * 
     * @author: Aarony
     * @version: 2018年6月20日 下午9:30:52
     */
    public static byte[] decryptDES(byte[] bytes, SecretKey secretKey) throws Exception {
        Cipher cipher = Cipher.getInstance("AES");
        cipher.init(Cipher.DECRYPT_MODE, secretKey);
        return cipher.doFinal(bytes);
    }

    /**
     * 
     * 此方法描述的是: 加密
     * 
     * @author: Aarony
     * @version: 2018年6月20日 下午9:29:02
     */
    public static byte[] encryptDES(byte[] bytes, SecretKey secretKey) throws Exception {
        Cipher cipher = Cipher.getInstance("AES");
        cipher.init(Cipher.ENCRYPT_MODE, secretKey);
        return cipher.doFinal(bytes);
    }

    public static SecretKey loadKeyDES(String base64Key) throws IOException {
        byte[] bytes = base642byte(base64Key);
        SecretKey key = new SecretKeySpec(bytes, "AES");
        return key;
    }

    /**
     * 
     * 此方法描述的是:获取base64 key
     * 
     * @author: Aarony
     * @version: 2018年6月20日 下午9:25:36
     */
    public static String genKeyDES() throws NoSuchAlgorithmException {
        KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
        keyGenerator.init(56);
        SecretKey key = keyGenerator.generateKey();
        return byte2base64(key.getEncoded());
    }

    /**
     * 
     * 此方法描述的是:base64 解码
     * 
     * @author: Aarony
     * @version: 2018年6月20日 下午9:16:57
     */
    public static byte[] base642byte(String base64) throws IOException {
        BASE64Decoder decoder = new BASE64Decoder();
        return decoder.decodeBuffer(base64);
    }

    /**
     * 
     * 此方法描述的是: base 64编码
     * 
     * @author: Aarony
     * @version: 2018年6月20日 下午9:15:14
     */
    public static String byte2base64(byte[] bytes) {
        BASE64Encoder base = new BASE64Encoder();
        return base.encode(bytes);
    }
}

 

AES

package com.aarony.test;

import java.io.IOException;
import java.security.NoSuchAlgorithmException;

import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

/**
 * 
 * 此类描述的是:对称加密
 * 
 * @author: Aarony
 * @version: 2018年6月20日 下午9:20:34
 */
public class SymmetricEncryptionAESDemo2 {

    /**
     * 
     * 此方法描述的是: 解密
     * 
     * @author: Aarony
     * @version: 2018年6月20日 下午9:30:52
     */
    public static byte[] decryptDES(byte[] bytes, SecretKey secretKey) throws Exception {
        Cipher cipher = Cipher.getInstance("DES");
        cipher.init(Cipher.DECRYPT_MODE, secretKey);
        return cipher.doFinal(bytes);
    }

    /**
     * 
     * 此方法描述的是: 加密
     * 
     * @author: Aarony
     * @version: 2018年6月20日 下午9:29:02
     */
    public static byte[] encryptDES(byte[] bytes, SecretKey secretKey) throws Exception {
        Cipher cipher = Cipher.getInstance("DES");
        cipher.init(Cipher.ENCRYPT_MODE, secretKey);
        return cipher.doFinal(bytes);
    }

    public static SecretKey loadKeyDES(String base64Key) throws IOException {
        byte[] bytes = base642byte(base64Key);
        SecretKey key = new SecretKeySpec(bytes, "DES");
        return key;
    }

    /**
     * 
     * 此方法描述的是:获取base64 key
     * 
     * @author: Aarony
     * @version: 2018年6月20日 下午9:25:36
     */
    public static String genKeyDES() throws NoSuchAlgorithmException {
        KeyGenerator keyGenerator = KeyGenerator.getInstance("DES");
        keyGenerator.init(128);
        SecretKey key = keyGenerator.generateKey();
        return byte2base64(key.getEncoded());
    }

    /**
     * 
     * 此方法描述的是:base64 解码
     * 
     * @author: Aarony
     * @version: 2018年6月20日 下午9:16:57
     */
    public static byte[] base642byte(String base64) throws IOException {
        BASE64Decoder decoder = new BASE64Decoder();
        return decoder.decodeBuffer(base64);
    }

    /**
     * 
     * 此方法描述的是: base 64编码
     * 
     * @author: Aarony
     * @version: 2018年6月20日 下午9:15:14
     */
    public static String byte2base64(byte[] bytes) {
        BASE64Encoder base = new BASE64Encoder();
        return base.encode(bytes);
    }
}

 

以上是关于java 对称加密的主要内容,如果未能解决你的问题,请参考以下文章

Java 对称加密算法IDEA 的使用教程

JAVA加密解密DES对称加密算法

java编写非对称加密,解密,公钥加密,私钥解密,RSA,rsa

SpringCloud-分布式配置中心加密-非对称加密

JAVA和.NET使用DES对称加密的区别

JAVA和.NET使用DES对称加密的区别