JAVA加密算法系列-AesCBC

package ***;import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;/**
* AES 是一种可逆加密算法,对用户的敏感信息加密处理
* 对原始数据进行AES加密后,在进行Base64编码转化;
* 正确
*/
public class AesCBC {
/*已确认
* 加密用的Key 可以用26个字母和数字组成
* 此处使用AES-128-CBC加密模式,key需要为16位。
*/private static String sKey="1234567890123456";private static String ivParameter="1234567890123456";private static AesCBC instance=null;//private static private AesCBC(){}public static AesCBC getInstance(){if (instance==null)instance= new AesCBC();return instance;}// 加密public String encrypt(String sSrc, String encodingFormat, String sKey, String ivParameter) throws Exception {Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");byte[] raw = sKey.getBytes();SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");IvParameterSpec iv = new IvParameterSpec(ivParameter.getBytes());//使用CBC模式,需要一个向量iv,可增加加密算法的强度
        cipher.init(Cipher.ENCRYPT_MODE, skeySpec, iv);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/CBC/PKCS5Padding");IvParameterSpec iv = new IvParameterSpec(ivParameter.getBytes());cipher.init(Cipher.DECRYPT_MODE, skeySpec, iv);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 = AesCBC.getInstance().encrypt(cSrc,"utf-8",sKey,ivParameter);System.out.println("加密后的字串是:"+ enString);System.out.println("1jdzWuniG6UMtoa3T6uNLA==".equals(enString));// 解密String DeString = AesCBC.getInstance().decrypt(enString,"utf-8",sKey,ivParameter);System.out.println("解密后的字串是:" + DeString);}
}

 

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/253400.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

dubbo系列(一)

进入官网之后,找到 http://dubbo.apache.org/en-us/docs/user/quick-start.html 有一个链接跳转到这里 http://dubbo.apache.org/en-us/docs/admin/install/provider-demo.html 使用git将项目下载下来 修改如下Service实现类 1 /*2 * Licensed to the Apache Softw…

基于Flask实现后台权限管理系统 - 表设计

1.1. 设计 1.1.1. 用户表 用户表记录系统中的所有用户,是权限管理系统最基本的部分,和其他权限表都有一定的关联关系,同时,一个还有一个重要的功能:系统登陆。 名称 数据类型 允许空值 默认值 描述 ID VARCHAR …

DM8168的McSPI/McASP/McBSP接口

McSPI接口 SPI管脚: 管脚 类型 描述 SPI_SCLK I/O SPI串行时钟(MASTER时:输出;SLAVE:输入) SPI_D0 I/O 能被配置为输入或输出(MOSI:master out,slave in或MISO&…

Sencha ID的注册

sencha id的注册用不着翻墙,直接访问下面的地址https://www.sencha.com/forum/register.php输入你的个人信息敞开来注册,我的注册名为charlie2018w非常顺利的过程你免费注册的id只能用30天。拥有这个id你就可以在eclipse或者sencha artchitect3或者webst…

ansible安装

1、简介 ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。ansible是基于模块工作的&#…

《大道至简》第一章伪代码

o愚公移山伪代码 Import.java Import.java Punlic class yugongyishan { Public static void main (string [] args) { while(山不平,,) {毕力平险,指通豫南,达于汉阴;叩石垦壤,箕㮥于渤海之尾;…

Verilog Matlab 联合仿真

一、概述 在进行仿真时,有时候一部分参考模型(reference model)来自于Matlab,这就需要通过某种方法调用并运行Matlab的参考模型。verilog并不支持直接调用Matlab,但是可以通过DPI接口调用C函数,而Matlab又预…

转 alsa录音放音执行流程详解

前言: linux中,无论是oss还是alsa体系,录音和放音的数据流必须分析清楚。先分析alsa驱动层,然后关联到alsa库层和应用层。 链接分析: core/pcm_native.c文件中.mmap snd_pcm_mmap调用snd_pcm_mmap_data(substream, fi…

jenkins之qq企业邮箱配置

一、配置qq企业邮箱 1、登录jenkins后台管理,选择 系统管理 ☞ 系统设置 2、SMTP server配置 3、邮件通知配置 配置ssl等参数 点击 高级 4、发送邮件测试 总结:邮箱配置不成程分析 1、管理员账号和默认发送账号不一致。2、smtp服务器设置不正确;qq企业…

关于iOS里的做动画方法的差别与注意事项

CoreAnimation与UIView.animation... 这两个方式的主要差别在于,前者如果不主动设置,那么在动画做完以后,会恢复原状。后者则不会,动画做完后是什么样,控件就是什么样。 UIView.animation...是什么 首先我们来做一个动…

mysql-5.7 持久化统计信息详解

一、持久化统计信息的意义: 统计信息用于指导mysql生成执行计划,执行计划的准确与否直接影响到SQL的执行效率;如果mysql一重启 之前的统计信息就没有了,那么当SQL语句来临时,那么mysql就要收集统计信息然后再生成SQL语…

关于传感器”英寸“计量

传感器上的n是指对角线长度为16mm或18mm的n倍 以英寸代指的传感器大小称为靶面尺寸。 在CCD/CMOS出现之前,摄像机是利用一种叫作“光导摄像管(Vidicon Tube)”的成像器件感光成像的,这是一种特殊设计的电子管,其直径的…

关于USB-AUDIO使用ALSA编程的一点问题

转载自:http://blog.chinaunix.net/uid-25272011-id-3153434.html 最近在调试一款原相PAP7501摄像头中的USB的麦克风,USB层走的应该是标准的UAC协议,具体可以见USB的官网:http://www.usb.org/developers/devclass_docs#approved&a…

让input变成不可编辑状态的方法

有时候&#xff0c;我们希望表单中的文本框是只读的&#xff0c;让用户不能修改其中的信息&#xff0c;如使<input type"text" name"input1" value"中国"> 的内容&#xff0c;"中国"两个字不可以修改。实现的方式归纳一下&#…

npm run dev 在本地调试出现跨域问题解决方法

npm run dev 在本地调试出现跨域问题 在localhost:8080调试时会出现跨域问题&#xff0c;如图&#xff1a; 我的项目是用webpack作为前端自动化构建工具&#xff0c;可以在webpack-dev-server中配置跨域。webpack-dev-server是一个小型的nodejs服务器&#xff0c;是基于express…

alsa声音编程介绍

http://blog.csdn.net/q553716434/article/details/7881552 period(周期):硬件中中断间的间隔时间。它表示输入延时。 声卡接口中有一个指针来指示声卡硬件缓存区中当前的读写位置。只要接口在运行&#xff0c;这个指针将循环地指向缓存区中的某个位置。 frame size sizeof(o…

五、python模块以及包

模块&#xff1a;编写的别的程序中重用一些代码。 1 模块的写法&#xff1a; 创建一个.py文件&#xff0c;该文件中包含函数与变量。使用撰写python解释器本身的本地语言来编写模块。比如使用C代码编写python模块&#xff0c;并且在编译后&#xff0c;可以通过标准的python解释…

jeecg选择按钮带入其他单据值

前端的标签 <input class"inputxt" id"fshimian" name"fshimian" ignore"ignore" datatype"*" value"${shizhePage.fshimian}" /> <t:choose hiddenName"fshimian" hiddenid"fname"…

alsa编程

alsa 编程 分类&#xff1a; linux 2012-08-18 20:13 124人阅读 评论(0) 收藏 举报 编程parametersbufferloopsaccessplayback转载自&#xff1a;http://blog.csdn.net/spygg/article/details/7824750 ALSA(Advanced Linux Sound Architecture)是由内核驱动,标准的API库和一系…

Fiddler4入门——手机抓包

一、下载工具包 百度搜索”fiddler 下载“ &#xff0c;安装最新版本 下载的软件安装包为“fiddler_4.6.20171.26113_setup.exe”格式&#xff0c;双击安装。安装成功&#xff0c;在“开始”-“所有程序”&#xff0c;就会看见这样的图标&#xff0c;若是常用的话&#xff0c;也…