- package com.stone.security;
- import java.util.Arrays;
- import javax.crypto.Cipher;
- import javax.crypto.KeyGenerator;
- import javax.crypto.SecretKey;
- import javax.crypto.spec.IvParameterSpec;
- /**
- * AES 算法 对称加密,密码学中的高级加密标准 2005年成为有效标准
- * @author stone
- * @date 2014-03-10 06:49:19
- */
- public class AES {
- static Cipher cipher;
- static final String KEY_ALGORITHM = "AES";
- static final String CIPHER_ALGORITHM_ECB = "AES/ECB/PKCS5Padding";
- /*
- *
- */
- static final String CIPHER_ALGORITHM_CBC = "AES/CBC/PKCS5Padding";
- /*
- * AES/CBC/NoPadding 要求
- * 密钥必须是16位的;Initialization vector (IV) 必须是16位
- * 待加密内容的长度必须是16的倍数,如果不是16的倍数,就会出如下异常:
- * javax.crypto.IllegalBlockSizeException: Input length not multiple of 16 bytes
- *
- * 由于固定了位数,所以对于被加密数据有中文的, 加、解密不完整
- *
- * 可 以看到,在原始数据长度为16的整数n倍时,假如原始数据长度等于16*n,则使用NoPadding时加密后数据长度等于16*n,
- * 其它情况下加密数据长 度等于16*(n+1)。在不足16的整数倍的情况下,假如原始数据长度等于16*n+m[其中m小于16],
- * 除了NoPadding填充之外的任何方 式,加密数据长度都等于16*(n+1).
- */
- static final String CIPHER_ALGORITHM_CBC_NoPadding = "AES/CBC/NoPadding";
- static SecretKey secretKey;
- public static void main(String[] args) throws Exception {
- method1("a*jal)k32J8czx囙国为国宽");
- method2("a*jal)k32J8czx囙国为国宽");
- method3("a*jal)k32J8czx囙国为国宽");
- method4("123456781234囙为国宽");// length = 16
- method4("12345678abcdefgh");// length = 16
- }
- /**
- * 使用AES 算法 加密,默认模式 AES/ECB
- */
- static void method1(String str) throws Exception {
- cipher = Cipher.getInstance(KEY_ALGORITHM);
- //KeyGenerator 生成aes算法密钥
- secretKey = KeyGenerator.getInstance(KEY_ALGORITHM).generateKey();
- System.out.println("密钥的长度为:" + secretKey.getEncoded().length);
- cipher.init(Cipher.ENCRYPT_MODE, secretKey);//使用加密模式初始化 密钥
- byte[] encrypt = cipher.doFinal(str.getBytes()); //按单部分操作加密或解密数据,或者结束一个多部分操作。
- System.out.println("method1-加密:" + Arrays.toString(encrypt));
- cipher.init(Cipher.DECRYPT_MODE, secretKey);//使用解密模式初始化 密钥
- byte[] decrypt = cipher.doFinal(encrypt);
- System.out.println("method1-解密后:" + new String(decrypt));
- }
- /**
- * 使用AES 算法 加密,默认模式 AES/ECB/PKCS5Padding
- */
- static void method2(String str) throws Exception {
- cipher = Cipher.getInstance(CIPHER_ALGORITHM_ECB);
- //KeyGenerator 生成aes算法密钥
- secretKey = KeyGenerator.getInstance(KEY_ALGORITHM).generateKey();
- System.out.println("密钥的长度为:" + secretKey.getEncoded().length);
- cipher.init(Cipher.ENCRYPT_MODE, secretKey);//使用加密模式初始化 密钥
- byte[] encrypt = cipher.doFinal(str.getBytes()); //按单部分操作加密或解密数据,或者结束一个多部分操作。
- System.out.println("method2-加密:" + Arrays.toString(encrypt));
- cipher.init(Cipher.DECRYPT_MODE, secretKey);//使用解密模式初始化 密钥
- byte[] decrypt = cipher.doFinal(encrypt);
- System.out.println("method2-解密后:" + new String(decrypt));
- }
- static byte[] getIV() {
- String iv = "1234567812345678"; //IV length: must be 16 bytes long
- return iv.getBytes();
- }
- /**
- * 使用AES 算法 加密,默认模式 AES/CBC/PKCS5Padding
- */
- static void method3(String str) throws Exception {
- cipher = Cipher.getInstance(CIPHER_ALGORITHM_CBC);
- //KeyGenerator 生成aes算法密钥
- secretKey = KeyGenerator.getInstance(KEY_ALGORITHM).generateKey();
- System.out.println("密钥的长度为:" + secretKey.getEncoded().length);
- cipher.init(Cipher.ENCRYPT_MODE, secretKey, new IvParameterSpec(getIV()));//使用加密模式初始化 密钥
- byte[] encrypt = cipher.doFinal(str.getBytes()); //按单部分操作加密或解密数据,或者结束一个多部分操作。
- System.out.println("method3-加密:" + Arrays.toString(encrypt));
- cipher.init(Cipher.DECRYPT_MODE, secretKey, new IvParameterSpec(getIV()));//使用解密模式初始化 密钥
- byte[] decrypt = cipher.doFinal(encrypt);
- System.out.println("method3-解密后:" + new String(decrypt));
- }
- /**
- * 使用AES 算法 加密,默认模式 AES/CBC/NoPadding 参见上面对于这种mode的数据限制
- */
- static void method4(String str) throws Exception {
- cipher = Cipher.getInstance(CIPHER_ALGORITHM_CBC_NoPadding);
- //KeyGenerator 生成aes算法密钥
- secretKey = KeyGenerator.getInstance(KEY_ALGORITHM).generateKey();
- System.out.println("密钥的长度为:" + secretKey.getEncoded().length);
- cipher.init(Cipher.ENCRYPT_MODE, secretKey, new IvParameterSpec(getIV()));//使用加密模式初始化 密钥
- byte[] encrypt = cipher.doFinal(str.getBytes(), 0, str.length()); //按单部分操作加密或解密数据,或者结束一个多部分操作。
- System.out.println("method4-加密:" + Arrays.toString(encrypt));
- cipher.init(Cipher.DECRYPT_MODE, secretKey, new IvParameterSpec(getIV()));//使用解密模式初始化 密钥
- byte[] decrypt = cipher.doFinal(encrypt);
- System.out.println("method4-解密后:" + new String(decrypt));
- }
- }
相关推荐
AES加密算法在Java中的实现详解
本文还有配套的精品资源,点击获取 简介:AES(高级加密标准)是一种对称加密算法,提供数据安全和网络传输保护。本文详细介绍了在Java环境中实现AES加密算法的步骤和关键概念,包括密钥生成、加密和解密过程、256位密钥的实现以及安全性和最佳实践。通过理解这些内容,开发者可以掌握如何在Java中创建安全的AES加密功能。 1. AES加密算法概述 随着信息技术...
Java实现AES加密算法
最近恶补了一些关于加密算法的知识,然后用编程语言来实现 AES简介 高级加密标准(AES,Advanced Encryption Standard)为最常见的对称加密算法(微信小程序加密传输就是用这个加密算法的)。对称加密算法也就是加密和解密用相同的密钥,具体的加密流程如下图: 下面简单介绍下各个部分的作用与意义: 明文P 没有经过加密的数据 密钥K 用来加密明文的密码,在对称加密...
深入解析Java AES和DES加密算法的应用陷阱
高级加密标准(AES)是一种广泛使用的对称加密算法,它在2001年被美国国家标准与技术研究院(NIST)选为加密标准,以取代原有的数据加密标准(DES)。AES的设计目标是提供比DES更高的安全性,同时保持高效和易用性。它的前身是Rijndael算法,这是一种旨在实现快速且安全的加密的算法,它在多种平台上都能很好地运行。AES加密算法支持三种不同的密钥长度:128、192和256位,分别对应于不同的加密强度。
AES加密算法的JAVA实现
最近公司需要,看了看AES对称加密算法,具体原理没有仔细研究还,先说说用法吧,由于能力有限,不足之处请大家多多指教,好了,不说废话了,直接上代码 /** * 加密 * * @param content 需要加密的内容 * @param password 加密密码 * @return */ public static byte[] encrypt(String content,
AES加密算法(java)实现
AES高级加密标准,在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一。本软件是用java语言开发,实现了AES算法对文件的加密和解密,并在界面上加了进度条,来提示用户加密解密的进度。如果不足之处,欢迎留言。
[漏洞剖析]JeecgBoot queryFieldBySql注入与JDBC连接滥用:从内存马植入到RCE的完整攻击链
本文深度剖析了JeecgBoot框架中queryFieldBySql接口的SQL注入漏洞及其引发的完整攻击链。攻击者利用该漏洞,通过Freemarker SSTI植入隐蔽的内存马,并进一步滥用JDBC连接测试功能,借助H2数据库特性实现远程命令执行(RCE),揭示了低代码平台中功能滥用与安全配置疏忽带来的严重风险。
AES加密算法java实现
转载自: https://blog.youkuaiyun.com/zyhlwzy/article/details/77948165 AES加密算法是密码学中的高级加密标准,该加密算法采用对称分组密码体制,密钥长度的最少支持为128、192、256,分组长度128位,算法应易于各种硬件和软件实现。这种加密算法是美国联邦政府采用的区块加密标准,这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。 过多...
FreeModbus从入门到实战:手把手教你用STM32实现工业级Modbus RTU通信
本文详细介绍了如何使用STM32和FreeModbus实现工业级Modbus RTU通信,涵盖硬件搭建、协议栈移植及优化技巧。重点解析了FreeModbus的移植过程,包括串口驱动适配、定时器配置和工业级稳定性优化,为开发者提供了一套完整的工业通信解决方案。
Java 实现 AES 对称加密算法的加密和解密
AES(Advanced Encryption Standard,高级加密标准)是一种对称加密算法,加密和解密使用相同的密钥。Java 代码实现 AES 加密/解密 一般步骤:先根据原始的密码(字节数组/字符串)生成 AES密钥对象;再使用 AES密钥对象 加密/解密 数据。为了方便直接使用,将 AES 加密/解密相关方法封装成工具类,并且支持对文件的 AES 加密/解密。
【推荐算法】召回模型总结
【推荐算法】召回模型总结
【Coze搞钱实战】24. 从零实现精准用户画像:Coze+企业微信打造智能导购推送系统(附完整代码)
电商运营中,“客服重复询问用户需求、无法精准推荐”是转化率低的核心痛点——日均200人次咨询,73%的问题是重复的,首单转化率仅14%。本文基于Coze平台sys_uuid用户识别功能、企业微信API与多维表格,打造“用户行为→自动打标→标签存储→智能推送”全链路方案:通过分类分层标签体系捕捉用户偏好,Coze自动识别用户并打标,飞书多维表格存储标签数据,企业微信触发个性化推送。实操后可使客服重复询问率下降62%,意向客户转化率提升81%,首单转化率提升64%。
java加密算法之对称加密算法AES
AES对称加密算法
比NTP还牛逼的时间同步协议:1588v2,亚微秒级!
1588v2,又称为Precision Time Protocol Version 2,即精密时间协议的第二版本,或称为PTPv2,是一种精密时间同步协议标准,旨在实现网络中设备之间的高精度时间同步。该协议由IEEE标准组织发布,并在网络测量和控制系统中得到广泛应用。1588v2的主要目的是在计算机网络中提供高度准确的时间同步。它可用于确保不同设备之间的时钟同步,从而协调它们的操作。这对于需要协同工作的系统、无线通信基站等具有关键性的应用非常重要。
java aes源码_JAVA AES加密算法实现代码
package com.zhaochao.utill;import java.io.UnsupportedEncodingException;import java.security.InvalidKeyException;import java.security.NoSuchAlgorithmException;import java.security.SecureRandom;import j...
微信小程序 - 实现仿小红书轮播图组件功能,类似小红书笔记页面图片展示播放效果,微信小程序仿小红书幻灯片轮播支持视频播放、图片预览,自动适应图片或视频大小可左右滑动切换(小程序精美轮播图,丝滑切换)
微信小程序,轮播图组件,微信小程序仿小红书轮播图,小红书轮播图仿造,微信小程序轮播图,微信小程序幻灯片,微信小程序高仿小红书轮播图实现,小程序实现类似小红书一样的轮播图组件,轮播图插件,精致轮播图,精美丝滑流畅切换的轮播图,轮播图组件,小红薯轮播图,关于小红书的小程序不同数量的轮播图,展示不一样的轮播指示点的实现,微信小程序仿小红书图片轮播,开发微信小程序模仿小红书,高仿小红书Banner的指示器,小红书小程序笔记详情轮播图指示点的随图片数量的变化动态变化,微信小程序swiper轮播图,js轮播图,html
实战篇| app爬虫不用真机
之前写过一篇基于真机app爬虫《App爬虫实战篇-以华为真机手机爬取集换社的app为例》,如果大家有用真机爬虫的经历,会深刻认识到真的不方便,一是自己的手机,经常会被电话、微信等打断,二是闲置手机,面对小批量数据还能勉强,大批量爬虫,会导致成本指数级上升,并且控制起来相对麻烦。以下就是常见的模拟器。emulator -avd my_avd -no-snapshot-save # 启动时不保存 snapshot。emulator -avd my_avd -wipe-data # 清除数据(恢复到出厂)
Java 加密 AES 对称加密算法
【AES】 一种对称加密算法,DES的取代者。 加密相关文章见:Java 加密解密 对称加密算法 非对称加密算法 MD5 BASE64 AES RSA 【代码】 代码比较多,有一部分非本文章内容代码,具体自己看吧。 package com.uikoo9.util.encrypt; import java.math.BigInteger; import j
第47节:cesium 热力图效果(含源码+视频)
cesium 热力图效果
AES加密算法的理解及Java实现
AES加密算法的理解及Java实现
IDEA的使用指南
IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.
Probability and Statistics - 4th edition
Probability and Statistics - 4th edition
java中加密算法AES和RSA
java中加密算法AES和RSA 文章目录java中加密算法AES和RSA一、简介二、知识点2.1 对称加密算法2.2 非对称加密三、实例3.1 添加base64的maven依赖3.2 对称加密AES代码实例3.3 非对称加密算法RSA代码实例 一、简介 对于机密信息,我们需要加密,这里介绍加密算法在java中的使用。 二、知识点 目前常用的加密算法有对称加密算法与非对称加密算法。 2.1 对称加...
Outlook Express 6 (OE6) for Win7/Win8/Win10
英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。
java的加密算法原理_Java加密算法 AES详解
import java.util.Arrays;import javax.crypto.Cipher;import javax.crypto.KeyGenerator;import javax.crypto.SecretKey;import javax.crypto.spec.IvParameterSpec;/*** AES 算法 对称加密,密码学中的高级加密标准 2005年成为有效标准* @au...
汉书HE8,好用的汇编代码编写工具
汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大
Java实现AES对称加密算法 ——加密和解密
一、AES对称加密算法简介随着对称密码的发展,DES数据加密标准算法由于密钥长度较小(56位),已经不适应当今分布式开放网络对数据加密安全性的要求,因此1997年NIST公开征集新的数据加密标准,即AES[1]。经过三轮的筛选,比利时Joan Daeman和Vincent Rijmen提交的Rijndael算法被提议为AES的最终算法。此算法将成为美国新的数据加密标准而被广泛应用在各个领域中。尽管...
aes加密算法java代码实现
package com.vk.aesdemo; public class Aes { public enum KeySize{ Bits128(4,10),Bits192(6,12),Bits256(8,14); /**以字为单位的种子密钥长度,16bytes=1word=128bits*/ private int nk; /**轮密钥的次数*/ private int
Java 中的加密算法: AES
Java 中的加密算法: AES
2092



被折叠的 条评论
为什么被折叠?



