Java code lib aes 加解密
Java aes 加解密
/**
* Created by LvJianwei on 2018/2/8.
*/ import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import javax.xml.bind.DatatypeConverter;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays; /**
* @program: reflection
* @description: AES
* @author: LvJianwei
* @create: 2018-02-08 15:07
**/
public class AESDemo {
public static void main(String[] args) {
String key="i will always love you";
byte[] keyBytes=initSecretKey();
String plainText="have a nice day";
System.out.println("plainText:"+plainText); byte[] encryptedBytes=encrypt(DEFAULT_CIPHER_ALGORITHM,keyBytes,KEY_ALGORITHM,plainText);
System.out.println("encryptedText:"+Arrays.toString(encryptedBytes));
byte[] decryptedBytes=decrypt(DEFAULT_CIPHER_ALGORITHM,keyBytes,KEY_ALGORITHM,encryptedBytes);
System.out.println("decryptedText:"+new String(decryptedBytes));
} /**
* algorithm
*/
private static final String KEY_ALGORITHM = "AES";
private static final String DEFAULT_CIPHER_ALGORITHM = "AES/ECB/PKCS5Padding";
/**
* generate key
* @return byte[] key
* @throws Exception
*/
public static byte[] initSecretKey() {
//返回生成指定算法的秘密密钥的 KeyGenerator 对象
KeyGenerator kg = null;
try {
kg = KeyGenerator.getInstance(KEY_ALGORITHM);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
return new byte[0];
}
//初始化此密钥生成器,使其具有确定的密钥大小
//AES 要求密钥长度为 128
kg.init(128);
//生成一个密钥
SecretKey secretKey = kg.generateKey();
return secretKey.getEncoded();
} /**
* AESEncrypt
* @param cipherAlgorithm transformation
* @param keyBytes key byte array
* @param keyAlgorithm SecretKeySpec's algorithm
* @param plainText text to be encrypted
* @return
*/
public static byte[] encrypt(String cipherAlgorithm, byte[] keyBytes, String keyAlgorithm, String plainText) {
try {
Cipher cipher = Cipher.getInstance(cipherAlgorithm); String keyStr= DatatypeConverter.printBase64Binary(keyBytes);
SecretKeySpec keySpec = new SecretKeySpec(keyBytes, keyAlgorithm); cipher.init(Cipher.ENCRYPT_MODE, keySpec); byte[] encyptedBytes = cipher.doFinal(plainText.getBytes());
return encyptedBytes; } catch (Exception e) {
e.printStackTrace();
}
return null;
} /**
* decrypt
* @param cipherAlgorithm transformation
* @param keyBytes key
* @param keyAlgorithm SecretKeySpec's algorithm
* @param encyptedBytes encypted byte array
* @return
*/
public static byte[] decrypt(String cipherAlgorithm, byte[] keyBytes, String keyAlgorithm, byte[] encyptedBytes) {
try {
Cipher cipher = Cipher.getInstance(cipherAlgorithm); String keyStr= DatatypeConverter.printBase64Binary(keyBytes);
SecretKeySpec keySpec = new SecretKeySpec(keyBytes, keyAlgorithm);
cipher.init(Cipher.DECRYPT_MODE, keySpec);
byte[] decryptedBytes = cipher.doFinal(encyptedBytes);
return decryptedBytes; } catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
Java code lib aes 加解密的更多相关文章
- Java中的AES加解密工具类:AESUtils
本人手写已测试,大家可以参考使用 package com.mirana.frame.utils.encrypt; import com.mirana.frame.constants.SysConsta ...
- C#与java中的AES加解密互解算法
一.C#版AES加解密算法 public class AESCode { public string Key { get; set; } public string Encrypt(string va ...
- Java中的AES加解密
直接上代码,Base64使用的是Java8的方法,如没有,替换即可 KEY:即密码 IV:即偏移量,可自订,十六位 加密方式:AES/CBC/PKCS5Padding,128位加密 如果想用256位和 ...
- AES加解密异常java.security.InvalidKeyException: Illegal key size
AES加解密异常 Java后台AES解密,抛出异常如下:java.security.InvalidKeyException: Illegal key size Illegal key size or ...
- Java、C#双语版配套AES加解密示例
这年头找个正经能用的东西那是真难,网上一搜索一大堆,正经能用的没几个,得,最后还是得靠自己,正巧遇上需要AES加解密的地方了,而且还是Java和C#间的相互加解密操作,这里做个备忘 这里采用的加解 ...
- C# RSA加解密与验签,AES加解密,以及与JAVA平台的密文加解密
前言: RSA算法是利用公钥与密钥对数据进行加密验证的一种算法.一般是拿私钥对数据进行签名,公钥发给友商,将数据及签名一同发给友商,友商利用公钥对签名进行验证.也可以使用公钥对数据加密,然后用私钥对数 ...
- 转载:Java、C#双语版配套AES加解密示例
转载,原文出处 http://www.cnblogs.com/lzrabbit/p/3639503.html 这年头找个正经能用的东西那是真难,网上一搜索一大堆,正经能用的没几个,得,最后还是得靠自己 ...
- 记一次Java AES 加解密 对应C# AES加解密 的一波三折
最近在跟三方对接 对方采用AES加解密 作为一个资深neter Ctrl CV 是我最大的优点 所以我义正言辞的问他们要了demo java demo代码: public class EncryptD ...
- java AES加解密
AES加解密工具类 package com.yan.demo; import org.apache.commons.lang3.StringUtils; import sun.misc.BASE64D ...
- aes加解密 Illegal key size
做aes加密时,发生一个奇怪的错误,在本地环境是好的,发布到测试环境就出问题, java.security.InvalidKeyException: Illegal key size 想到本地环境之前 ...
随机推荐
- 统信 UOS 安装 svn 指南
详细 SVN 安装指南 概述 本指南适用于在 UnionTech OS Desktop 20 Pro(基于 Debian 10 Buster,架构 x86_64)云系统上离线安装 SVN(Subver ...
- 【学习】重学Swift5-面相对象、协议编程
六.面向对象编程 常见高阶函数 // map print(numbers.map { $0 * 10}) // filter print(numbers.filter{ $0 > 4 }) // ...
- 源码调试-带你了解下车牌识别的深度学习模型-LPRNet
视频演示 源码调试-带你了解下车牌识别的深度学习模型-LPRNet 大家好,这里是Coding茶水间.本期我们来调试运行一个经典的深度学习网络--LPRNet,它专门用于车牌识别任务. LPRNe ...
- C++ STL 常用算法
C++ 标准模板库(STL)提供了丰富的算法库(定义在 <algorithm> 头文件中),这些算法多为通用函数模板,可配合容器和迭代器高效操作数据. 1.非修改序列算法 这些算法不会改变 ...
- PHP SPL SplFileInfo FilterIterator 轮询文件删除
基于PHP spl 遍历文件删除过期的日志文件 一.定义PHP类 , 限制文件扩展 RecursiveFileFilterIterator.class.php <?php class Recur ...
- iai-kinect驱动问题解决
千辛万苦解决了libfreenect2的使用问题,终于来到了下一个坑--..iai-kinect2 主要要解决的问题是如下报错-- 'Failed to load nodelet '/kinect2_ ...
- AI数据分析仪设计原理图:RapidIO信号接入 平板AI数据分析仪
1 .概述 本仪器是一款面向工业控制.新能源.震动测量等业务开发的平板AI数据分析仪.基于 Jetson Orin Nano(AI边缘计算).实现RapidIO接口数据接入,进行AI分析.RapidI ...
- Border Theory 学习笔记
Border Theory border 定义:在同一个串中既是前缀又是后缀. 最长border:最长的 border 性质1: 一个串 border 的 border 还是它的 border.画图自 ...
- Cellcano代码学习-使用ArchR处理原始数据01 set_ArchR()
.markdown-body { line-height: 1.75; font-weight: 400; font-size: 16px; overflow-x: hidden; color: rg ...
- Vue 3.0 学习
Vue 3.0 有什么更新? 检测机制的改变: 基于代理Proxy的observer实现,提供全语言覆盖的反应性跟踪: 消除了Vue 2 中基于 Object.defineProperty 的实现所存 ...