博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA加密算法系列-AesEBC
阅读量:4583 次
发布时间:2019-06-09

本文共 2849 字,大约阅读时间需要 9 分钟。

package ***;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.InputStream;import java.io.OutputStream;import java.io.UnsupportedEncodingException;import java.security.MessageDigest;import javax.crypto.Cipher;import javax.crypto.spec.IvParameterSpec;import javax.crypto.spec.SecretKeySpec;import sun.misc.BASE64Decoder;import sun.misc.BASE64Encoder;public class AesEBC {    /*已确认    * 加密用的Key 可以用26个字母和数字组成    * 此处使用AES-128-CBC加密模式,key需要为16位。    */        private static String sKey="1234567890123456";        private static String ivParameter="1234567890123456";        private static AesEBC instance=null;        //private static         private AesEBC(){        }        public static AesEBC getInstance(){            if (instance==null)                instance= new AesEBC();            return instance;        }        // 加密        public String encrypt(String sSrc, String encodingFormat, String sKey, String ivParameter) throws Exception {            Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");            byte[] raw = sKey.getBytes();            SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");            cipher.init(Cipher.ENCRYPT_MODE, skeySpec);            byte[] encrypted = cipher.doFinal(sSrc.getBytes(encodingFormat));            return new BASE64Encoder().encode(encrypted);//此处使用BASE64做转码。    }        // 解密        public String decrypt(String sSrc, String encodingFormat, String sKey, String ivParameter) throws Exception {            try {                byte[] raw = sKey.getBytes("ASCII");                SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");                Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");                cipher.init(Cipher.DECRYPT_MODE, skeySpec);                byte[] encrypted1 = new BASE64Decoder().decodeBuffer(sSrc);//先用base64解密                byte[] original = cipher.doFinal(encrypted1);                String originalString = new String(original,encodingFormat);                return originalString;            } catch (Exception ex) {                return null;            }    }        public static void main(String[] args) throws Exception {            // 需要加密的字串            String cSrc = "123456";            System.out.println("加密前的字串是:"+cSrc);            // 加密            String enString = AesEBC.getInstance().encrypt(cSrc,"utf-8",sKey,ivParameter);            System.out.println("加密后的字串是:"+ enString);            System.out.println("yXVUkR45PFz0UfpbDB8/ew==".equals(enString));            // 解密            String DeString = AesEBC.getInstance().decrypt(enString,"utf-8",sKey,ivParameter);            System.out.println("解密后的字串是:" + DeString);        }}

 

转载于:https://www.cnblogs.com/dava/p/6416640.html

你可能感兴趣的文章
Ice_cream's world I
查看>>
java取整和java四舍五入方法
查看>>
学习linux-基础-操作系统结构
查看>>
卸载Linux内置的AMP软件
查看>>
关于js的几道经典题(作用域、原型链等)自己做的
查看>>
如何判断js是否加载完全
查看>>
【菜鸟学Python】函数的定义及调用
查看>>
宜信微服务任务执行器
查看>>
realsense blog 国外某人
查看>>
点击按钮将内容赋值到粘贴板
查看>>
DevExpress12.2.6 安装顺序记录
查看>>
.Net基础篇_学习笔记_第四天_switch-case02
查看>>
linux之基本命令讲解
查看>>
DAG上dp思想
查看>>
写文件
查看>>
iOS获取APP的版本号和名称
查看>>
如何用keytool导入证书
查看>>
作业二:源程序版本管理软件和项目管理软件的优缺点
查看>>
jquery的DataTables插件的使用方法
查看>>
POJ 2774 Long Long Message 后缀数组
查看>>