Java利用 AES/ECB/PKCS5Padding 算法加解密_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > Java利用 AES/ECB/PKCS5Padding 算法加解密

Java利用 AES/ECB/PKCS5Padding 算法加解密

 2020/4/2 12:32:26  zw7534313  程序员俱乐部  我要评论(0)
  • 摘要:对称加密、解密importjavax.crypto.Cipher;importjavax.crypto.spec.SecretKeySpec;importsun.misc.BASE64Decoder;importsun.misc.BASE64Encoder;/***AES加解密*/publicclassAES{/***密钥算法*/privatestaticfinalStringALGORITHM="AES"
  • 标签:Java 利用 算法

对称加密、解密

import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder; 
 
/**
* AES加解密
*/
public class AES { 
 
    /**
     * 密钥算法
     */ 
    private static final String ALGORITHM = "AES"; 
    /**
     * 加解密算法/工作模式/填充方式
     */ 
    private static final String ALGORITHM_STR = "AES/ECB/PKCS5Padding"; 
 
    /**
     * SecretKeySpec类是KeySpec接口的实现类,用于构建秘密密钥规范
     */ 
    private SecretKeySpec key; 
 
    public AES(String hexKey) { 
        key = new SecretKeySpec(hexKey.getBytes(), ALGORITHM); 
    } 
 
    /**
     * AES加密
     * @param data
     * @return
     * @throws Exception
     */ 
    public String encryptData(String data) throws Exception { 
        Cipher cipher = Cipher.getInstance(ALGORITHM_STR); // 创建密码器 
        cipher.init(Cipher.ENCRYPT_MODE, key);// 初始化 
        return new BASE64Encoder().encode(cipher.doFinal(data.getBytes())); 
    } 
 
    /**
     * AES解密
     * @param base64Data
     * @return
     * @throws Exception
     */ 
    public String decryptData(String base64Data) throws Exception{ 
        Cipher cipher = Cipher.getInstance(ALGORITHM_STR); 
        cipher.init(Cipher.DECRYPT_MODE, key); 
        return new String(cipher.doFinal(new BASE64Decoder().decodeBuffer(base64Data))); 
    } 
 
    /**
     * hex字符串 转 byte数组
     * @param s
     * @return
     */ 
    private static byte[] hex2byte(String s) { 
        if (s.length() % 2 == 0) { 
            return hex2byte (s.getBytes(), 0, s.length() >> 1); 
        } else { 
            return hex2byte("0"+s); 
        } 
    } 
 
    private static byte[] hex2byte (byte[] b, int offset, int len) { 
        byte[] d = new byte[len]; 
        for (int i=0; i<len*2; i++) { 
            int shift = i%2 == 1 ? 0 : 4; 
            d[i>>1] |= Character.digit((char) b[offset+i], 16) << shift; 
        } 
        return d; 
    } 
 
    public static void main(String[] args) throws Exception { 
        AES util = new AES("abcdefghijklmnop"); // 公开密钥 
        System.out.println("cardNo:"+util.encryptData("1234_abcd")); // 加密 
        System.out.println("exp:"+util.decryptData("Qd05HTY/pEPi2h9+PFXN9g==")); // 解密 
    } 
}
上一篇: Java 添加、删除Excel表单控件 下一篇: 没有下一篇了!
发表评论
用户名: 匿名