加密算法使用(四):AES的使用
AES是一种对称加密方式,比DES更为安全,用一个秘钥加密数据之后,可以用同一个秘钥对加密后的数据解密还原,以下是一套以字符串为例子的使用全过程演示,
用到了
commons-codec.jar
1 package testEncrypt; 2 3 import java.security.InvalidKeyException; 4 import java.security.Key; 5 import java.security.NoSuchAlgorithmException; 6 import java.security.SecureRandom; 7 8 import javax.crypto.BadPaddingException; 9 import javax.crypto.Cipher; 10 import javax.crypto.IllegalBlockSizeException; 11 import javax.crypto.KeyGenerator; 12 import javax.crypto.NoSuchPaddingException; 13 import javax.crypto.SecretKey; 14 import javax.crypto.spec.SecretKeySpec; 15 16 import org.apache.commons.codec.binary.Base64; 17 //import sun.misc.BASE64Encoder; 18 public class TestAesEncrypt { 19 20 public static void main(String[] args) throws NoSuchAlgorithmException, InvalidKeyException, NoSuchPaddingException, IllegalBlockSizeException, BadPaddingException { 21 //随机生成密钥 22 KeyGenerator keygen = KeyGenerator.getInstance("AES"); 23 //SecureRandom random = new SecureRandom(Base64.decodeBase64("abc")); 24 SecureRandom random = new SecureRandom(); 25 keygen.init(random); 26 Key key = keygen.generateKey(); 27 //获取秘钥字符串 28 String key64Str = Base64.encodeBase64String(key.getEncoded()); 29 //要加密的数据 30 String dataStr="da89gh9qj3ebg9babjdslgbuqgb&FTUG^(GB"; 31 System.out.println("要加密的数据:"+dataStr); 32 33 //还原秘钥字符串到秘钥byte数组 34 byte[] keyByteArray = Base64.decodeBase64(key64Str); 35 //重新形成秘钥,SecretKey是Key的子类 36 SecretKey secretKey = new SecretKeySpec(keyByteArray, "AES"); 37 38 //初始化加密组件 39 Cipher cipher = Cipher.getInstance("AES"); 40 cipher.init(Cipher.ENCRYPT_MODE, secretKey); 41 42 //加密后的数据,首先将字符串转为byte数组,然后加密,为便于保存先转为base64 43 String encryptedDataStr = Base64.encodeBase64String(cipher.doFinal(dataStr.getBytes())); 44 System.out.println("加密后的数据:"+encryptedDataStr); 45 46 //将加密组件的模式改为解密 47 cipher.init(Cipher.DECRYPT_MODE, secretKey); 48 //和上面的加密相反,先解base64,再解密,最后将byte数组转为字符串 49 String decodeDataStr = new String(cipher.doFinal(Base64.decodeBase64(encryptedDataStr))); 50 System.out.println("解密后的数据:"+decodeDataStr); 51 } 52 53 }
加密算法使用(四):AES的使用相关推荐
- 常见加密算法DES、AES和RSA的原理和特点
关注+星标公众号,不错过精彩内容 编排 | strongerHuang 微信公众号 | 嵌入式专栏 今天主要总结下常用的对称性加密算法DES和AES,非对称性加密算法RSA. 嵌入式专栏 1 DES加 ...
- Java实现密码学工具,集成了对称加密算法DES,AES,IDEA,公开加密算法RSA,ECC,散列算法MD5,SHA1,CRC32,以及RSA,DSA,ECDSA数字签名验证示例。
密码学综合工具 前言 git网址 项目结构 项目预览 String与byte[]互转 通过`String`类转换 通过`Base64`互转[jdk-8] 前言 我们网络信息安全的实验...要我们找各种 ...
- Java 加密解密 对称加密算法 非对称加密算法 MD5 BASE64 AES RSA
[最简单的加密] 1.简单的概念 明文:加密前的信息 密文:机密后的信息 算法:加密或解密的算法 密钥:算法使用的钥匙(读作miyao,正确应该是miyue,但是大家都读miyao) 2.简单的例子 ...
- java 可逆的加密算法_java实现AES可逆加密算法
package com.hdu.encode; import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import ...
- 加密算法详解AES/HmacSHA1/DES
byte[] raw = sKey.getBytes("utf-8");SecretKeySpec skeySpec = new SecretKeySpec(raw, " ...
- aes加密算法 java实现,AES加密算法的java实现
AES加密算法的java实现 package com.encryp; import java.security.InvalidKeyException; import java.security.No ...
- RC4算法原理、Java实现RC4加密算法、DES AES RC4算法比较
DES AES RC4算法比较 根据密钥类型的不同,加密算法分为对称和非对称两种.对称加密系统是指加密和解密均采用同一把密钥. 对称加密算法是最常用的加密算法,优势在于算法公开,计算量小,加密效率高. ...
- 常用对称加密算法(DES/AES)类(PHP)
看注释,啥也不说了,欢迎各种跨平台测试! /** * 常用对称加密算法类 * 支持密钥:64/128/256 bit(字节长度8/16/32) * 支持算法:DES/AES(根据密钥长度自动匹配使用: ...
- java aes对称加密算法_Java实现AES对称加密算法
Java代码实现 import java.security.SecureRandom; import javax.crypto.Cipher; import javax.crypto.KeyGener ...
- AES加密算法及逆向
AES加密算法逆向以及特征识别 1.AES加密算法 关于AES加密算法,网上资料特别特别多,个人认为可以从这几点去学习: AES加密算法设计者的相关论文以及其他相关论文(如安全性.性能.硬件/指令实现 ...
最新文章
- 【转】HTTP Header 详解
- Response_输出数据,实现文件下载,定时刷新页面,是否缓存,重定向,实现验证码...
- SweetAlert插件 弹框插件
- 如何不部署Keras / TensorFlow模型
- MOSS/Sharepoint 如何更改一台已经安装了SharePoint的服务器名称
- 人工智障学习笔记——强化学习(4)时间差分方法
- nodejs 快速发布rtsp server
- 盒子模型(悬挂式布局)
- c++编写手机小游戏代码_手机也能编程?盘点这6个可以用手机编程的App!快收藏!...
- android创建项目,并开发项目。
- 进程的同步与通信,进程与线程同步的区别,进程与线程通信的区别【转】
- FishC笔记—15 讲 字符串:格式化
- 马拉车算法详解, C++代码实现
- ProE/Creo免费插件 MCADEx Tools 5.0
- 简单聊聊利用DNS服务器提供单一入口
- 10电脑睡眠后自动关机怎么回事 win_win10电脑睡眠变关机怎么解决_win10睡眠变自动关机的处理方法-系统城...
- 针对Object和Array深拷贝处理
- 特斯拉将粉丝创意注册为商标 包括电动皮卡版书包
- Lisseur Professionnel Ghd thé sont diurétiques et se traduira par nous
- WordPress数据库文章表(字段说明)
热门文章
- C++ Under the Hood
- java,js获取数组最大/小值
- java 调用dll 方法 postmessage实现后台模拟按键_VB实现模拟键盘及模拟鼠标(后台操作)...
- h5页面不可 移动_H5营销|为什么H5适合于微信营销
- Java运算符优先级和表达式及数据类型转换
- linux吉祥物的名字,知道Linux的吉祥物的名字和性别吗
- java throws catch_java中throws与try...catch的区别点
- java 生成随机数_Java 生成随机数的 N 种方法
- zabbix服务端远程执行命令
- 订单结算中最佳优惠券组合推荐策略分析