java安全架构____AES加密原理
来源:互联网 发布:unity3d 5 动画系统 编辑:程序博客网 时间:2024/05/28 23:10
//使用安全数可以增加SECURITY_STR 安全系数
package demo.security;import java.security.SecureRandom;import javax.crypto.Cipher;import javax.crypto.KeyGenerator;import javax.crypto.SecretKey;import javax.crypto.spec.SecretKeySpec;/** * @author God * AES加密解密工具类 */public class AESUtil {//加密模式public static final String ALGORITHM_AES="AES";//安全数 public static final String SECURITY_STR="zhangsan";/** * 加密 * @param security_str * @param clearText * @return */public static byte[] AESEncode(String security_str,String clearText){byte[] cipherBytes=null;try {// 1.构造密钥生成器,指KeyGenerator keyGenerator = KeyGenerator.getInstance(ALGORITHM_AES);// 2.初始化秘钥生成器 加安全数keyGenerator.init(128, new SecureRandom(security_str.getBytes()));//获取安全秘钥SecretKey secretKey = keyGenerator.generateKey();///生成秘钥自己数组byte[] secretKeyBytes = secretKey.getEncoded();//根据字节数组生成AES秘钥SecretKeySpec secretKeySpec = new SecretKeySpec(secretKeyBytes, ALGORITHM_AES);// 根据AES生成密码器Cipher cipher = Cipher.getInstance(ALGORITHM_AES);//初始化密码器 加密模式,secretKeySpeccipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);//将明文进行自己数组加密处理cipherBytes=cipher.doFinal(clearText.getBytes());} catch (Exception e) {e.printStackTrace();}return cipherBytes;}/** * 解密 安全数 加密的数组 * @return */public static byte[] AESDecode(String security_str,byte [] cipherBytes){byte[] clearTextBytes=null;try {KeyGenerator keyGenerator = KeyGenerator.getInstance(ALGORITHM_AES);keyGenerator.init(128, new SecureRandom(security_str.getBytes()));SecretKey secretKey = keyGenerator.generateKey();byte[] secretKeyBytes = secretKey.getEncoded();SecretKeySpec secretKeySpec = new SecretKeySpec(secretKeyBytes,ALGORITHM_AES);Cipher cipher = Cipher.getInstance(ALGORITHM_AES);// 创建密码器cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);// 初始化clearTextBytes = cipher.doFinal(cipherBytes);} catch (Exception e) {e.printStackTrace();}return clearTextBytes;}/** * 测试AES加密解密 * @param args */public static void main(String[] args) {String clearText="老司机开车了";System.out.println("明文是_____:"+clearText);//加密System.out.println("机密后的密文是___________:"+AESEncode(SECURITY_STR, "老司机开车了"));byte[]bytes=AESDecode(SECURITY_STR, AESEncode(SECURITY_STR, "老司机开车了"));System.out.println("解析的明文是___:"+new String(bytes));}}//运行结果
1 0
- java安全架构____AES加密原理(2)
- java安全架构____AES加密原理
- java安全架构____AES原理(1)
- java安全架构____java SHA加密原理
- java安全架构____DES加密原理
- java安全架构____RSA加密原理(1)
- java安全架构____RSA加密原理(2)
- java安全架构____MD5加密原理和简介
- Java安全架构____RSA加密
- java安全架构____java MD5加密
- java安全架构____java SHA加密
- java安全架构____java HMAC加密
- java安全架构____java Base64加密
- java安全架构____java DSA加密解密
- java安全架构____DES加密解密
- java安全架构____RSA加密解密
- java安全架构____java HMAC原理
- java安全架构____java Base64原理分析
- PostgreSQL数据库psql的使用之三
- sql server分类查询归总
- scrapy错误之KeyError: 'XXX does not support field: xxx'
- Android内存管理机制
- Log4j2在项目中的应用
- java安全架构____AES加密原理
- Android应用启动的流程
- POJ 3169 Layout
- Greenplum Database 大数据处理学习
- 蓝桥杯——指针问题典例二(2017.3.2)
- 九度OJ-1003:A+B
- 分布式服务框架学习笔记5 消息队列
- Android Studio 的初始设置
- 引入Activiti配置文件activiti.cfg.xml