AES加密算法-128位高安全,高速度
网上资料显示,下一代加密技术会围绕着AES技术进行。初出茅庐,学习编写了加密代码,如下所示
package com.bao.tools.encryption;
import java.security.SecureRandom;
import java.util.Scanner;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import org.junit.Test;
/**
* @title AES加密解密算法
* @description 高级加密标准,对称算法,是下一代的加密算法标准,速度快,安全级别高,现在 AES 标准的一个实现是 Rijndael 算法
* @author Administrator
* @date 2015-7-16
*/
public class CAES {
/**
*
* @param key(生成键字符串)
* @param value(加密的文字字符串)
* @param mode
* (true:加密;false:解密)
* @return
*/
public static byte[] setEncrypted(String key, byte[] value, boolean mode)throws Exception {
if (key == null || value == null)
return null;
// --------- 生成密码键
// 创建AES通用键模式
KeyGenerator generator = KeyGenerator.getInstance("AES");
// 初始化通用键(256位,创建随机编码键)
generator.init(128, new SecureRandom(key.getBytes("UTF-8")));
// 创建安全键实例
SecretKey keys = generator.generateKey();
// 创建密匙规范的实例
SecretKeySpec keySpec = new SecretKeySpec(keys.getEncoded(), "AES");
// ----------开始加密/解密内容
Cipher cipher = Cipher.getInstance("AES");// 创建AES内容加密实例
if (mode) {
cipher.init(Cipher.ENCRYPT_MODE, keySpec);// 加密
} else {
cipher.init(Cipher.DECRYPT_MODE, keySpec);// 解密
}
byte[] result = cipher.doFinal(value);
return result;//注意:返回一定是byte数组,否则报 16位字节异常 !
}
/*
* 测试
*/
@Test
public void test() throws Exception {
Scanner scanner = new Scanner(System.in);
System.out.println("-----------AES安全加密测试-------------\n请输入主键(字符串):");
String key = scanner.nextLine();
System.out.println("请输入要加密的内容:");
String value=scanner.nextLine();
System.out.println("---------运行结果-----------");
//如果要求安全系数更高且暂时不用解密,可以使用BASE64编码后再进行AES加密
// value = CBase64.setEncrypted(value);
byte[] message = setEncrypted(key, value.getBytes(), true);//执行加密方法
System.out.println("------加密字符为:"+new String(message));//在这里将字节数组转换为字符串显示出来
System.out.println("+++++++解 密 :"+new String(setEncrypted(key, message, false)));
scanner.close();
}
}
运行结果:

注明:网上找的资料,搞了大半个晚上才发现,byte存取很重要,不然会报16倍数字节异常 !
AES加密算法-128位高安全,高速度的更多相关文章
- C# AES的128位、192位、256位加密
C# AES的128位.192位.256位加密 AES加密原理,这里就不解释了,自行百度.这里主要细说AES的CBC加密模式下的128位.192位.256位加密区别,参考 对称加密和分组加密中的四 ...
- python3.7 AES.MODE_ECB(128位) pkcs5padding 加密算法
用惯用的写法总报TypeEerror错误,经过调试,总算成功啦,直接上代码 TypeError("Object type %s cannot be passed to C code" ...
- C# 128位AES 加密解密 (转)
/// AES加密 2 /// </summary> 3 /// <param name="inputdata">输入的数据 ...
- .NET AES加解密(128位)
AES加密(128位): /// <summary> /// 有密码的AES加密 /// </summary> internal static string Encrypt(s ...
- php AES cbc模式 pkcs7 128位加密解密(微信小程序)
PHP AES CBC模式PKCS7 128位加密 加密: $key = '1234567812345678'; $iv = '1234567890123456'; $message = '12345 ...
- Microsoft(C)注册服务器(32位)CPU占用高
Microsoft(C)注册服务器(32位)CPU占用高 摘自:https://blog.csdn.net/jtsqrj/article/details/83034252 2018年10月12日 23 ...
- 参考别人的代码写的aes加密,记录一下(AES,ECB模式,填充PKCS5Padding,数据块128位,偏移量无,以hex16进制输出)
package org.jimmy.autosearch2019.test; import java.security.SecureRandom; import javax.crypto.Cipher ...
- SGC强制最低128位加密,公钥支持ECC加密算法的SSL证书
Pro SSL证书,验证企业域名所有权和企业身份信息,采用SGC(服务器门控)技术强制128位以上至256位加密,属于企业OV验证级专业版(Pro) SSL证书:即使用户使用低版本浏览器(比如浏览 ...
- AES 加密算法的原理详解
AES 加密算法的原理详解 本教程摘选自 https://blog.csdn.net/qq_28205153/article/details/55798628 的原理部分. AES简介 高级加密标准( ...
随机推荐
- Android真机测试 INSTALL_FAILED_INSUFFICIENT_STORAGE 解决方法[转]
方法一: 试试修改一下manifest文件 :添加 一句: android:installLocation="preferExternal" [html]view plainc ...
- 搞不定linux下的无线网卡驱动的权宜之计
毕竟windows用了这么些年了,对windows下的一些东西也比较熟悉,还有就是windows的软件方式比较傻瓜. 在linux下搞不定无线网卡啊,幸亏有甲骨文的virtualbox,咱虚拟一个xp ...
- 《zw版·Halcon-delphi系列原创教程》halconxlib控件列表
<zw版·Halcon-delphi系列原创教程>halconxlib控件列表 Halcon v11.01版,com控件,安装后,共有75个控件, 不过最重要的控件,只有两个,T ...
- C++11—lambda函数
[1]lambda表达式语法定义 lambda表达式的语法定义如下: [capture] (parameters) mutable ->return-type {statement}; (1) ...
- android 学习随笔二十二(小结)
ADB进程 * adb指令 * adb install xxx.apk * adb uninstall 包名 * adb devices * adb start-server * adb kill-s ...
- innodb double write buffer
两次写是innodb的一个重要特性,目的是为了保证在异常down机或者没电的情况下,保证数据的安全可靠.一次是往内存的double write buffer中写,一次是在刷共享表空间的连续128个页. ...
- exe文件打开方式(恢复EXE文件关联)
文件关联损坏常常是计算机病毒造成的,目前网络上有很多相关修复工具,相对来说,System Repair Engineer 支持的修复格式是比较齐全的,这个工具可以在http://www.kztechs ...
- webservice cxf error:类的两个属性具有相同名称 "password"
execption detail: Caused by: javax.xml.ws.WebServiceException: org.apache.cxf.service.factory.Servic ...
- Could not write metadata for '/taiping-sol-insu-composite'.
Could not write metadata for '/taiping-sol-insu-composite'. 这是由于删除一个项目时,没有同时在硬盘上删除该项目,而后又到硬盘文件系统中删除了 ...
- php中引用和赋值的区别主要在哪里
php中引用和赋值的区别 <pphp 的引用允许用两个变量来指向同一个内容. 相当于他们可以是 不同的名字,却可以指向 同一个 物理空间. 赋值,它实际上意味着把右边表达式的值赋给左边的运算数. ...