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 要求密钥长度为 128kg.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;}
}

转载于:https://www.cnblogs.com/lvjianwei/p/8432679.html

Java code lib aes 加解密相关推荐

  1. Java RSA、AES加解密,Python RSA、AES加解密

    需求 python服务发起加密http请求网关,网关验签解密后路由返回加密结果,python服务解密得到明文 请求加密 生成随机字符 s,[a-z][A-z][0-9] 16位 ,例如:s=2zQ6E ...

  2. java aes 工具类_Java中的AES加解密工具类:AESUtils

    本人手写已测试,大家可以参考使用 package com.mirana.frame.utils.encrypt; import com.mirana.frame.constants.SysConsta ...

  3. php aes 256 加解密,PHP完整的AES加解密算法使用及例子(256位)

    依赖PHP自身的mcrypt扩展 class aes { // CRYPTO_CIPHER_BLOCK_SIZE 32 private $_secret_key = 'default_secret_k ...

  4. Java实现aes加解密

    pom文件的依赖 <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 --> <depe ...

  5. 记一次Java AES 加解密 对应C# AES加解密 的一波三折

    最近在跟三方对接 对方采用AES加解密 作为一个资深neter Ctrl CV 是我最大的优点 所以我义正言辞的问他们要了demo java demo代码: public class EncryptD ...

  6. Java使用AES加解密

    Java使用AES加解密 目录 1.1生成密钥 1.2密钥的存储 1.3获取存储的密钥 1.4加解密 1.5使用存储的密钥进行加解密示例 AES是一种对称的加密算法,可基于相同的密钥进行加密和解密.J ...

  7. java aes ebc_Delphi XE2+标准AES加解密算法(AES/EBC,CBC/PKCS5Padding-base64)

    [实例简介] 实现了AES/ECB/PKCS5Padding.AES/CBC/PKCS5Padding 密钥长度128/192/256bit,密钥0填充.是标准的AES算法,支持在线AES加解密网站互 ...

  8. 前端CryptoJS和Java后端数据互相加解密(AES)

    目录 一.序言 二.关于前端CryptoJS 1.CryptoJS简单介绍 2.加密和填充模式选择 3.前端AES加解密示例 (1) cryptoutils工具类 (2) 测试用例 (3) 加解密后输 ...

  9. Java与Winform进行AES加解密数据传输的工具类与对应关系和示例

    场景 Android+Java中使用Aes对称加密的工具类与使用: Android+Java中使用Aes对称加密的工具类与使用_霸道流氓气质的博客-CSDN博客 上面讲的Java与安卓进行数据传输时使 ...

最新文章

  1. linux下遇到的小问题与解决方法
  2. Python实战之logging模块使用详解
  3. 二、linux最小驱动
  4. linux symbol文件,LINUX EXPORT_SYMBOL_GPL及EXPORT_SYMBOL导出函数
  5. Spring Boot 应用监控:Actuator与 Admin
  6. 高科技的计算机作文600字,神奇的电脑_600字
  7. sql在线模拟器_力荐一款在线SQL模拟器
  8. mysql不能删除外键吗,MySQL不能删除外键约束所需的索引
  9. Spark初识-Spark基本架构概览使用
  10. mysql系统属性_mysql 显示表字段及mysql系统信息
  11. html浮动跟随鼠标,jQuery 图片跟随鼠标浮动
  12. TensorFlow函数:tf.ones
  13. LeetCode 116. Populating Next Right Pointers in Each Node
  14. jmp怎么做合并的箱线图_JMP和Minitab的图形分析
  15. 快速掌握Python的捷径-Python基础前传(1) 1
  16. u盘如何安装xp和linux,怎样从U盘安装Windows XP?
  17. vs2008中文版 下载
  18. OpenCV每日函数 几何图像变换模块 (8) remap函数
  19. Android肝帝战纪之字体图标库(iconify)的简单使用
  20. FINN(二)CNN,BNN及其硬件实现的背景知识

热门文章

  1. Django 的F查询与Q查询,事物
  2. [ python ] 正则表达式及re模块
  3. filter---用angularjs实现关键字高亮
  4. 安卓音频输出采样率_只有AirPods配有姓名吗?安卓的这些无线耳机也不错
  5. java des zero_android----Java DES加密算法工具类
  6. python继承 子类init_Python类继承:使用自己的和父的默认值和init方法进行动态子类初始化...
  7. linux虚拟网络设备--eth, tap/tun, veth-pair(九)
  8. linux进程--进程组、会话、守护进程(八)
  9. linux内核网络协议栈--数据接收流程图(五)
  10. 用计算机算出90除以6.28,用计算器计算:sin51°30′+ cos49°50′-tan46°10′的值是 .——青夏教育精英家教网——...