[java]java加密解密算法(基于org.apache.commons)源代码
[java]java加密解密算法使用的org.apache.commons
[java]java加密解密算法(基于org.apache.commons)源代码
- package com.jueyue.crypto;
- import javax.crypto.Cipher;
- import javax.crypto.spec.IvParameterSpec;
- import javax.crypto.spec.SecretKeySpec;
- import org.apache.commons.codec.binary.BAES64;
- /*******************************************************************************
- * AES加解密算法
- *
- * @author jueyue
- *
- 加密用的Key 可以用26个字母和数字组成,最好不要用保留字符,虽然不会错,至于怎么裁决,个人看情况而定
- 此处使用AES-128-CBC加密模式,key需要为16位。
- 也是使用<span style="font-size: 1em; line-height: 1.5;">0102030405060708</span>
- */
- public class AES {
- // 加密
- public static String Encrypt(String sSrc, String sKey) throws Exception {
- if (sKey == null) {
- System.out.print("Key为空null");
- return null;
- }
- // 判断Key是否为16位
- if (sKey.length() != 16) {
- System.out.print("Key长度不是16位");
- return null;
- }
- byte[] raw = sKey.getBytes();
- SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
- Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");//"算法/模式/补码方式"
- IvParameterSpec iv = new IvParameterSpec("0102030405060708".getBytes());//使用CBC模式,需要一个向量iv,可增加加密算法的强度
- cipher.init(Cipher.ENCRYPT_MODE, skeySpec, iv);
- byte[] encrypted = cipher.doFinal(sSrc.getBytes());
- return BAES64.encodeBAES64String(encrypted);//此处使用BAES64做转码功能,同时能起到2次加密的作用。
- }
- // 解密
- public static String Decrypt(String sSrc, String sKey) throws Exception {
- try {
- // 判断Key是否正确
- if (sKey == null) {
- System.out.print("Key为空null");
- return null;
- }
- // 判断Key是否为16位
- if (sKey.length() != 16) {
- System.out.print("Key长度不是16位");
- return null;
- }
- byte[] raw = sKey.getBytes("ASCII");
- SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
- Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
- IvParameterSpec iv = new IvParameterSpec("0102030405060708"
- .getBytes());
- cipher.init(Cipher.DECRYPT_MODE, skeySpec, iv);
- byte[] encrypted1 = BAES64.decodeBAES64(sSrc);//先用bAES64解密
- try {
- byte[] original = cipher.doFinal(encrypted1);
- String originalString = new String(original);
- return originalString;
- } catch (Exception e) {
- System.out.println(e.toString());
- return null;
- }
- } catch (Exception ex) {
- System.out.println(ex.toString());
- return null;
- }
- }
- }
热门文章推荐
- [HLS]做自己的m3u8点播系统使用HTTP Live Streaming(HLS技术)
- [FMS]FMS流媒体服务器配置与使用相关的介绍
- [AS3]什么是M3U8,与HTML5的区别是什么
- AS2.0 让flash自适应全屏,并且不自动缩放
- [AS3]as3.0的sound类常用技巧整理
- [AS3]as3与ByteArray详解、ByteArray介绍、ByteArray用法
- 关于RTMP,RTMPT,RTMPS,RTMPE,RTMPTE协议的介绍
- [JS]分享浏览器弹出窗口不被拦截JS示例
请稍候...