AES加解密-JAVA代码
2081
【Java】AES加机解密工具类代码
import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; public final class AES { //加密 public static String encrypt(String content, String key) throws Exception { Cipher cipher = Cipher.getInstance("AES"); cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(generateKey(key).getEncoded(), "AES")); byte[] b = cipher.doFinal(content.getBytes("UTF-8")); if (b == null || b.length == 0) { return ""; } StringBuffer buf = new StringBuffer(); for (int i = 0; i < b.length; i++) { String hex = Integer.toHexString(b[i] & 0xFF); if (hex.length() == 1) { hex = '0' + hex; } buf.append(hex.toUpperCase()); } return buf.toString(); } //解密 public static String decrypt(String content, String key) throws Exception { if (content == null || content.length() == 0) { return null; } byte[] b = new byte[content.length() / 2]; for (int i = 0; i < content.length() / 2; i++) { int high = Integer.parseInt(content.substring(i * 2, i * 2 + 1), 16); int low = Integer.parseInt(content.substring(i * 2 + 1, i * 2 + 2), 16); b[i] = (byte) (high * 16 + low); } Cipher cipher = Cipher.getInstance("AES"); cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(generateKey(key).getEncoded(), "AES")); return new String(cipher.doFinal(b)); } private static SecretKey generateKey(String key) throws NoSuchAlgorithmException { SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG"); KeyGenerator kg = KeyGenerator.getInstance("AES"); secureRandom.setSeed(key.getBytes()); kg.init(128, secureRandom); return kg.generateKey(); } //测试 public static void main(String[] args) { try { String str = "AES测试"; String secretKey = "秘钥"; System.out.println("秘钥:" + secretKey); System.out.println("明文:" + str); String str0 = encrypt(str, secretKey); System.out.println("密文:" + str0); System.out.println("解密:" + decrypt(str0, secretKey)); } catch (Exception e) { e.printStackTrace(); } } }
原文链接: https://www.yukx.com/javadev/article/details/1986.html 优科学习网AES加解密-JAVA代码
推荐文章
-
Java内存模型(JavaMemoryModel,JMM)是Java语言规范的一部分,它定义了Java虚拟机(JVM)如何管理和协调各个线程之间的共享数据访问行为,旨在解决由于多线程环境下的数据可见性、原子性和有序性问题。理解和掌握JMM是编写高效、正确并发程序的关键。一、Java内存模型概述JMM
-
为什么要设置静态IP在安装好CentOS虚拟机以后,一般我们会通过Xshell连接到虚拟机,而不是直接使用虚拟机里面的终端(Terminal)输入命令。如果使用默认的动态分配IP,虚拟机每次开机以后IP都会改变,Xshell连接需要修改IP。所以我们需要将IP设置成静态IP,只要虚拟机开机即可连接。
-
使用centos的wget提示:commondnotfound是因为没有安装wget这个指令安装wgetyum -y install wget
-
一、因为Centos官网是挂在国外的服务器上,下载镜像时相比于国内的下载速度会慢很多,所以在这里向大家分享两个国内的镜像站去下载Centos镜像。二、前往阿里云镜像站下载Centos7镜像1、阿里云官网地址:https://www.aliyun.com/ 2、点击左上角的【文档与社区】展开选择【镜像
-
现在不管安防工程还是弱电工程,与网络的联系也越来越密切了,网络基础知识中的网络命令ping命令在项目中是使用频率最高的,一般我们用的都是它的基本功能,今天和大家来详细看下Ping命令的7个基础用法,掌握了秒变大神!1、ping命令基础2、ping-t的使用3、ping-a的使用4、ping-n的使用
-
总结下工作中遇到的GC问题。一、JVM参数设置不当机器4G,部分JVM参数设置-Xmx3296m -Xms3296m -Xss256k -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m -XX:MaxGCPauseMillis=200 -XX:+Use