AES加密算法demo
AES简介:
AES加密标准又称为高级加密标准Rijndael加密法,是美国国家标准技术研究所NIST旨在取代DES的21世纪的加密标准。AES的基本要求是,采用对称分组密码体制,密钥长度可以为128、192或256位,分组长度128位,算法应易在各种硬件和软件上实现。
常结合RSA使用--RSA demo介绍链接
demo链接
AES加密实例
package com.fostlin.aes;import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;import javax.crypto.*;
import javax.crypto.spec.SecretKeySpec;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;public class AESUtil {/*** 解密* @return*/public static String decode(String aes_key,String data){try {//1.构造密钥生成器,指定为AES算法,不区分大小写KeyGenerator keygen=KeyGenerator.getInstance("AES");//2.根据ecnodeRules规则初始化密钥生成器//生成一个128位的随机源,根据传入的字节数组keygen.init(192, new SecureRandom(aes_key.getBytes()));//3.产生原始对称密钥SecretKey original_key=keygen.generateKey();//4.获得原始对称密钥的字节数组byte [] raw=original_key.getEncoded();//5.根据字节数组生成AES密钥SecretKey key=new SecretKeySpec(raw, "AES");//6.根据指定算法AES自成密码器Cipher cipher=Cipher.getInstance("AES");//7.初始化密码器,第一个参数为加密(Encrypt_mode)或者解密(Decrypt_mode)操作,第二个参数为使用的KEYcipher.init(Cipher.DECRYPT_MODE, key);//8.将加密并编码后的内容解码成字节数组byte [] byte_content= new BASE64Decoder().decodeBuffer(data);/** 解密*/byte [] byte_decode=cipher.doFinal(byte_content);String AES_decode=new String(byte_decode,"utf-8");return AES_decode;} catch (NoSuchAlgorithmException e) {e.printStackTrace();} catch (NoSuchPaddingException e) {e.printStackTrace();} catch (InvalidKeyException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} catch (IllegalBlockSizeException e) {e.printStackTrace();} catch (BadPaddingException e) {e.printStackTrace();}//如果有错就返加nulllreturn null;}/*** 加密* 1.构造密钥生成器* * 2.根据ecnodeRules规则初始化密钥生成器* * 3.产生密钥* * 4.创建和初始化密码器* * 5.内容加密* * 6.返回字符串* @return*/public static String encryption(String aes_key,String data){try {KeyGenerator keygen = KeyGenerator.getInstance("AES");keygen.init(192,new SecureRandom(aes_key.getBytes()));//128 192 256位//3.产生原始对称密钥SecretKey original_key=keygen.generateKey();//4.获得原始对称密钥的字节数组byte [] raw=original_key.getEncoded();//5.根据字节数组生成AES密钥SecretKey key=new SecretKeySpec(raw, "AES");//6.根据指定算法AES自成密码器Cipher cipher=Cipher.getInstance("AES");//7.初始化密码器,第一个参数为加密(Encrypt_mode)或者解密解密(Decrypt_mode)操作,第二个参数为使用的KEYcipher.init(Cipher.ENCRYPT_MODE, key);//8.获取加密内容的字节数组(这里要设置为utf-8)不然内容中如果有中文和英文混合中文就会解密为乱码byte [] byte_encode=data.getBytes("utf-8");//9.根据密码器的初始化方式--加密:将数据加密byte [] byte_AES=cipher.doFinal(byte_encode);//10.将加密后的数据转换为字符串String AES_encode=new BASE64Encoder().encode(byte_AES);//11.将字符串返回return AES_encode;} catch (NoSuchAlgorithmException e) {e.printStackTrace();} catch (NoSuchPaddingException e) {e.printStackTrace();} catch (BadPaddingException e) {e.printStackTrace();} catch (IllegalBlockSizeException e) {e.printStackTrace();} catch (InvalidKeyException e) {e.printStackTrace();} catch (UnsupportedEncodingException e) {e.printStackTrace();}return null;}public static void main(String[] args) {String encryption = encryption("test","张三");System.out.println(encryption);String jm = decode("test",encryption);System.out.println(jm);}
}
AES加密算法demo相关推荐
- java delphi aes加密算法_Delphi AES,又一个加密算法例子
/// //AES DEMO V1.0// //作者:ksaiy// //欢迎使用由ksaiy制作的AES加密算法演示程序,此算法为标准的AES算法,你可以根据的 //的自己需要进行变形.具体怎么操作 ...
- aes算法的C语言实现代码,AES加密算法c语言实现代码
AES加密算法c语言实现代码 #include "stdio.h" #include "memory.h" #include "time.h" ...
- Android AES加密算法,现在实际上
昨天,老板让我来看看android加密算法.于是在网上找了找,发现AES加密算法.(当然,MD5,BASE64什么http://snowolf.iteye.com/blog/379860这篇文章列举了 ...
- AES加密算法动画演示
波士顿大学的Howard Straubing做了这么一个动画来展示AES加密算法的演示,挺不错的. 点击这里看全屏
- JS 与 JAVA 跨语言实现 RSA 和 AES加密算法
简介: 开发中为了数据的安全性使用加密算法对数据进行加密是一种很常见的情况,但就一种语言来说,直接使用提供的相应的库进行少许封装是一件很容易的事.但是在一些情况下我们可能需要跨语言来实现,比如前后端分 ...
- aes加密算法_令你的文件安全有了新方法AES-256-GCM加密网站免费用
您是否一直在寻找文件安全性的解决方案? 有一个免费的文件加密网站,在这里效果很好. 常用的加密技术主要分为两类:接近表示加密和不接近表示加密,AES加密是一种接近表示加密,即使用加密 泄露秘密沟通的关 ...
- AES加密算法的VHDL实现
AES加密算法的VHDL实现 步骤: 一.轮密钥加 (1) 拷贝16字节的输入数组到4*4的态矩阵(state)中去. (2) 用密钥调度表的前四行对态矩阵(state)实行一个字节一个字节的xor( ...
- Android AES加密算法及事实上现
昨天老大叫我看看android加密算法.于是网上找了找,找到了AES加密算法.(当然还有MD5,BASE64什么的http://snowolf.iteye.com/blog/379860这篇文章列举了 ...
- Android AES加密算法及其实现
找到了AES加密算法.(当然还有MD5,BASE64什么的http://snowolf.iteye.com/blog/379860这篇文章列举了很多,但是基本都是j2se平台的,android平台不一 ...
最新文章
- 数据库连接字在Web.config里的用法
- [LeetCode] NO.383 Ransom Note
- 在项目中增加task定时任务
- FCOS 基于FPN之上的完全Anchor Free检测框架
- CoreCLR源码探索(三) GC内存分配器的内部实现
- jzoj3319-[BOI2013]雪地踪迹【bfs】
- matlab 特征值不排序,matlap 代码求解释!从这里开始即可%对特征值进行排序并去掉...
- hibernate saveorupdate mysql_Mysql数据库 hibernate保存数据时,Mysql主键需设定自增,否则报错_MySQL...
- jquery案例11——模拟小说阅读器
- JAVA自学-day13-StringBuffer类、数组高级以及Arrays、Integer类
- 阿里云数据库RDS如何用Navicat连接?
- Codeforces Round #612 (Div. 1) A. Garland(dp动态规划)
- 蒲公英服务器搭建小程序,uniapp 小程序打包发布
- HTML基础-笔记1标签
- 根据手机号查询归属地以及制式信息
- HTML---一个没有下划线字体颜色为黑色的链接
- 组合模式(Bridge Pattern) – 设计模式之结构型模式
- Tiptop ERP GP 5.25 删除营运中心新建营运中心说明
- Google Chrome浏览器、360极速浏览器必备的N个插件
- python中rstrip是什么意思_【详解】python中字符串的strip(),lstrip(),rstrip()的含义...
热门文章
- maskrcnn-benchmar 代码详解之 fpn.py
- 如何开发一个鸿蒙的应用软件,别急,华为工程师已经告诉你了!动手开发鸿蒙系统的第一款应用
- 跨境电商季节性选品攻略
- 计算机程序设计基础----习题4
- html 禁止页面回弹,JavaScript禁止微信浏览器下拉回弹效果
- php视频播放链提取,从PHP获取Vimeo的直接链接视频
- Vimeo 开启VR内容付费模式,真的能让消费者主动掏钱包吗?
- 【异常】Session 0x0 for server null, unexpected error, closing socket connection and attempting reconn
- Lost connection to MySQL server during query (by quqi99)
- 清华大学公开课线性代数2——第9讲:马尔科夫矩阵和正矩阵