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 想到本地环境之前 ...
随机推荐
- LiveGBS接入LiveQing流媒体服务实现摄像头云端录像和和直播以及大屏展示
应用背景 LiveGBS接入LiveQing流媒体服务实现云端录像和大屏展示,将能力进一步延伸,支持云端录像,云直播的相关业务及场景. 安装包下载 LiveGBS LiveQing 方案架构 一步一步 ...
- 【word】文本段末的下划线没有,按空格后也打不出来
1.现象:文本段末的下划线没有,按空格后也打不出来. 在文档(无论是 WPS 还是 Office 文档)中,当进行文本编辑时,在某一段落的末尾位置,想要通过按下空格键来让光标后方出现下划线(通常是用于 ...
- kali启动ssh
在 Kali Linux 中启动 SSH 服务的步骤如下: 首先检查 SSH 服务状态: sudo systemctl status ssh 如果服务未运行,启动 SSH 服务: sudo syste ...
- 有点意思!Java8后最有用新特性排行榜!
相信这两天看了 JDK 25 新特性的同学已经彻底对 Oracle 失望了,这那是挤牙膏啊?是连牙膏都懒得挤了. 所以,大家都在评论区喊话,如果你(Oracle)实在不想发可以不发,但不要糊弄大家. ...
- 十年沉淀,ISC打造中国网安名片
每个行业都会有属于自己的盛会,每个圈子也都有自己的聚集地.ISC走过十年,为大安全筑底--数字时代开启,ISC蓄力新的十年. 当前,全社会正在加速向数字时代演进,新一轮科技革命和产业变革推动着全球数字 ...
- 【STM32系列】超好用的开源按键状态系统lwbtn,以及超详细的移植教程
GitHub开源按键状态机lwbtn 原项目地址:https://github.com/MaJerle/lwbtn 移植教程 第一步:找到lwbtn文件 点进这个文件夹,顺着点进去,就可以看到一共那么 ...
- java判断是什么操作系统
当需要根据java代码判断当前系统什么操作系统时,可使用下面的方法: 1.根据系统名称判断类型 public static void main(String[] args) { String osNa ...
- git如何新建(修改)分支
1.新建分支 前提是已经将新建的仓库克隆到本地. 这里使用命令行方式说明: 1)切换到主分支(若没有分支则跳过此步) git checkout master 2)创建并切换到新分支 假设新建分支dev ...
- 前端 Vue启动本地(.exe)文件
首先,启动本地的.exe文件的方式有以下两种: 方式1:通过使用JS打开本地exe文件.但是一般的浏览器,由于安全问题,都会禁止掉这个JS对象,这就导致部分浏览器不支持该种方式. 方式2:利用浏览器外 ...
- 奶奶都能看懂的 C++ —— 手把手指针
引用 在正式介绍指针之前,先来看看什么是引用. int a = 10; int &ref1 = a; 你可能注意到了,上面的代码里有个 &.这就是我们的主角,引用.在变量名之前加上该符 ...