JAVA Aes加解密详解

摘要:
上篇随笔留了一个问题,两种加密结果不一样?

上篇随笔留了一个问题,两种加密结果不一样?

其实是内部实现方式不一样,具体见注释

1  /**
2 * 提供密钥和向量进行加密
3 *
4 * @paramsSrc
5 * @paramkey
6 * @paramiv
7 * @return
8 * @throwsException
9      */
10     public static String Encrypt(String sSrc, byte[] key, byte[] iv) throwsException {
11         SecretKeySpec skeySpec = new SecretKeySpec(key, "AES");//根据给定的字节数组构造一个密钥
12         Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");//"算法/模式/补码方式"
13         IvParameterSpec _iv = new IvParameterSpec(iv);//使用CBC模式,需要一个向量iv,可增加加密算法的强度
14         cipher.init(Cipher.ENCRYPT_MODE, skeySpec, _iv);//用密钥和一组算法参数初始化此 Cipher
15         byte[] encrypted = cipher.doFinal(sSrc.getBytes("utf-8"));//按单部分操作加密或解密数据,或者结束一个多部分操作。
16         returnBase64.encodeBase64String(encrypted);
17     }
1  /**
2 * 加密
3 * @paramcontent
4 * @paramkeyBytes
5 * @paramiv
6 * @return
7 * @throwsException
8      */
9     public String AES_CBC_Encrypt(byte[] content, byte[] keyBytes, byte[] iv) throwsException{
10         try{
11             KeyGenerator keyGenerator= KeyGenerator.getInstance("AES");//返回生成指定算法的秘密密钥的 KeyGenerator 对象
12             keyGenerator.init(128, new SecureRandom(keyBytes) );//使用用户提供的随机源初始化此密钥生成器,使其具有确定的密钥大小
13             SecretKey key=keyGenerator.generateKey();//生成一个密钥。
14             Cipher cipher=Cipher.getInstance("AES/CBC/PKCS5Padding");
15             cipher.init(Cipher.ENCRYPT_MODE, key, newIvParameterSpec(iv));
16             byte[] result=cipher.doFinal(content);
17             returnBase64.encodeBase64String(result);
18         }catch(Exception e) {
19 e.printStackTrace();
20             throwe;
21 }
22     }

免责声明:文章转载自《JAVA Aes加解密详解》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇clickhouse Mysql 数据类型对比phpexcel 使用一,解决自动加载问题下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

iOS开发之—— 加密使用(MD5,base64,DES,AES)

基本的单向加密算法: BASE64 严格地说,属于编码格式,而非加密算法 MD5(Message Digest algorithm 5,信息摘要算法)SHA(Secure Hash Algorithm,安全散列算法)HMAC(Hash Message Authentication Code,散列消息鉴别码) MD5、SHA、HMAC这三种加密算法,可谓是非...

Crypto++ AES 加密解密流程

// aesdemo.cpp : 定义控制台应用程序的入口点。 // #include <stdio.h>#include <tchar.h>#include <iostream> #include "aes.h" using namespace std; using namespace CryptoPP;...

Crypto++入门学习笔记(DES、AES、RSA、SHA-256)

最先附上下载地址 背景(只是个人感想,技术上不对后面的内容构成知识性障碍,可以skip): 最近,基于某些原因和需要,笔者需要去了解一下Crypto++库,然后对一些数据进行一些加密解密的操作。 笔者之前没接触过任何加密解密方面的知识(当然,把每个字符的ASCII值加1之流对明文进行加密的“趣事”还是干过的,当时还很乐在其中。),甚至一开始连Crypto+...

R语言:ggplot2精细化绘图——以实用商业化图表绘图为例(转)

本文旨在介绍R语言中ggplot2包的一些精细化操作,主要适用于对R画图有一定了解,需要更精细化作图的人,尤其是那些刚从excel转ggplot2的各位,有比较频繁的作图需求的人。不讨论那些样式非常酷炫的图表,以实用的商业化图表为主。包括以下结构: 1、画图前的准备:自定义ggplot2格式刷 2、画图前的准备:数据塑形利器dplyr / tidyr介绍 ...

一梦江湖费六年——QQ群聊天分析

本文结构: 一、那些年我们加过的QQ群 二、数据读入和整理(一)——来自蓝翔的挖掘机 二、数据读入和整理(二)——你不知道的事 三、聊天宏观(1)——寤寐思服 三、聊天宏观(2)日月篇 三、聊天宏观(3)七曜篇 四、聊天微观(1)——黄金档和午夜频道 四、聊天微观(2)——充电两小时聊天五分钟 四、聊天微观(3)——幸存者偏...

常见的加密方式总结

对称加密 DES DES加密算法是一种分组密码,以64位为分组对数据加密,它的密钥长度是56位,加密解密用同一算法,加密速度快,但是容易破解安全性低。 3DES(Triple DES) 是基于DES的对称算法,对一块数据用三个不同的密钥进行三次加密,强度更高,加强版DES。 (DES算法比较简单,容易破解已不建议使用) AES(微信用的就是这种加密方式)...