java对称加密(DES/DESESE/AES)的简单使用

本文提供了一个使用Java实现的AES加密与解密的完整示例。通过该示例可以了解如何生成AES密钥、使用密钥进行数据的加密及解密过程,并展示了如何将字节数组转换为十六进制字符串以便于查看加密结果。

主类:

/**
 * Created by cuboo on 2016/10/14.
 */
public class Main {
    public static void main(String agrs[]) throws Exception {
        //String keyType = "DES"; DES的使用
        //int keysize = 56;

        //DESede加密的使用
       // String keyType = "DESede";
        //int keysize = 168;//112/168

        //AES的加密
        String keyType = "AES";
        int keysize = 128;//192/256

        byte[] data = "abcdefg".getBytes();
        byte[] key = DEScode.InitKey(keyType,keysize);
        byte[] encryptDate = DEScode.encrypt(key,keyType,data);
        byte[] decryptData = DEScode.decrypt(key,keyType,encryptDate);

        System.out.println(bytesToHexString(key));
        System.out.println(bytesToHexString(encryptDate));
        System.out.println(new String(decryptData));
        
    }

    public static String bytesToHexString(byte[] data){
        StringBuilder strb = new StringBuilder();
        for (int i = 0; i < data.length; i++) {
            int s = data[i] & 0xff;
            String str = Integer.toHexString(s);
             if (str.length() < 2){
                 strb.append(0);
             }else {
                 strb.append(str);
             }

        }
        return strb.toString();
    }

}

方法类:

import javax.crypto.*;
import javax.crypto.spec.SecretKeySpec;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;

/**
 * Created by cuboo on 2016/10/14.
 */
public class DEScode {
    /*
     *生成秘钥
     */
    public static byte[] InitKey(String keyType,int keysize) throws NoSuchAlgorithmException {
            KeyGenerator keyGenerator = KeyGenerator.getInstance(keyType);
            keyGenerator.init(keysize);
            SecretKey secretKey = keyGenerator.generateKey();
        return  secretKey.getEncoded();
    }
    /*
     *加密
     */
    public static byte[] encrypt(byte[] key,String keyType,byte[] data)
            throws NoSuchPaddingException, NoSuchAlgorithmException,
            InvalidKeyException, BadPaddingException, IllegalBlockSizeException {

        SecretKey secretKey = new SecretKeySpec(key,keyType);
        Cipher cipher = Cipher.getInstance(keyType);
        cipher.init(Cipher.ENCRYPT_MODE,secretKey);
        return cipher.doFinal(data);
    }

    /*
     *解密
     */
    public static byte[] decrypt(byte[] key,String keyType,byte[] data)
            throws NoSuchPaddingException, NoSuchAlgorithmException,
            InvalidKeyException, BadPaddingException, IllegalBlockSizeException {

        SecretKey secretKey = new SecretKeySpec(key,keyType);
        Cipher cipher = Cipher.getInstance(keyType);
        cipher.init(Cipher.DECRYPT_MODE,secretKey);
        return cipher.doFinal(data);
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值