失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > java基于AES对称加密算法实现的加密与解密功能示例

java基于AES对称加密算法实现的加密与解密功能示例

时间:2024-01-26 12:54:39

相关推荐

java基于AES对称加密算法实现的加密与解密功能示例

Java|java教程

java AES 加密 解密

Java-java教程

android 五子棋源码,vscode加载DMP,ubuntu杀死锁屏进程,tomcat 内网映射,sqlite 稳定性,amaze 日历插件,阿里开源前端ant框架,哪些网站爬虫合法,php mysql教程,阳江专业seo服务,仿九库文学网小说网站源码,易语言 网页采集,各种网页模板,影视APP下载单页面源码,asp简单的学生管理系统源码,莱恩游戏源码程序lzw

package ;import java.io.UnsupportedEncodingException;import java.security.InvalidKeyException;import java.security.NoSuchAlgorithmException;import java.security.SecureRandom;import java.util.Date;import javax.crypto.BadPaddingException;import javax.crypto.Cipher;import javax.crypto.IllegalBlockSizeException;import javax.crypto.KeyGenerator;import javax.crypto.NoSuchPaddingException;import javax.crypto.SecretKey;import javax.crypto.spec.SecretKeySpec;/** * @author WHD */public class AesUtil { private static final String AES="AES"; private static final String UTF8="UTF-8"; static KeyGenerator kgen =null; static{ try {kgen= KeyGenerator.getInstance(AES); } catch (NoSuchAlgorithmException e) {// TODO Auto-generated catch blocke.printStackTrace(); } } /* * @param content: * @param password: */ private static byte[] encrypt(String content, String password) { try {// 使用静态代码块来生成KeyGenerator对象//KeyGenerator kgen = KeyGenerator.getInstance(AES);// 使用128 位kgen.init(128, new SecureRandom(password.getBytes()));SecretKey secretKey = kgen.generateKey();byte[] encodeFormat = secretKey.getEncoded();SecretKeySpec key = new SecretKeySpec(encodeFormat, AES);// Cipher对象实际完成加密操作Cipher cipher = Cipher.getInstance(AES);// 加密内容进行编码byte[] byteContent = content.getBytes(UTF8);// 用密匙初始化Cipher对象cipher.init(Cipher.ENCRYPT_MODE, key);// 正式执行加密操作byte[] result = cipher.doFinal(byteContent);return result; } catch (NoSuchAlgorithmException e) {e.printStackTrace(); } catch (NoSuchPaddingException e) {e.printStackTrace(); } catch (InvalidKeyException e) {e.printStackTrace(); } catch (UnsupportedEncodingException e) {e.printStackTrace(); } catch (IllegalBlockSizeException e) {e.printStackTrace(); } catch (BadPaddingException e) {e.printStackTrace(); } return null; } /* * @param content: * @param password: */ private static byte[] decrypt(byte[] content, String password) { try {// 使用静态代码块来生成KeyGenerator对象//KeyGenerator kgen = KeyGenerator.getInstance(AES);// 使用128 位kgen.init(128, new SecureRandom(password.getBytes()));SecretKey secretKey = kgen.generateKey();byte[] encodeFormat = secretKey.getEncoded();SecretKeySpec key = new SecretKeySpec(encodeFormat, AES);// Cipher对象实际完成加密操作Cipher cipher = Cipher.getInstance(AES);// 用密匙初始化Cipher对象cipher.init(Cipher.DECRYPT_MODE, key);// 正式执行解密操作byte[] result = cipher.doFinal(content);return result; } catch (NoSuchAlgorithmException e) {e.printStackTrace(); } catch (NoSuchPaddingException e) {e.printStackTrace(); } catch (InvalidKeyException e) {e.printStackTrace(); } catch (IllegalBlockSizeException e) {e.printStackTrace(); } catch (BadPaddingException e) {e.printStackTrace(); } return null; } /** * 二进制--》十六进制转化 * @param buf * @return */ private static String parseByte2HexStr(byte buf[]) { StringBuffer sb = new StringBuffer(); for (int i = 0; i < buf.length; i++) {String hex = Integer.toHexString(buf[i] & 0xFF);if (hex.length() == 1) { hex = + hex;}sb.append(hex.toUpperCase()); } return sb.toString(); } /** * 十六进制--》二进制转化 * @param hexStr * @return */ private static byte[] parseHexStr2Byte(String hexStr) { if (hexStr.length() < 1) {return null; } byte[] result = new byte[hexStr.length() / 2]; for (int i = 0; i < hexStr.length() / 2; i++) {int high = Integer.parseInt(hexStr.substring(i * 2, i * 2 + 1), 16);int low = Integer.parseInt(hexStr.substring(i * 2 + 1, i * 2 + 2),16);result[i] = (byte) (high * 16 + low); } return result; } public static void main(String[] args) throws UnsupportedEncodingException { long begin=new Date().getTime(); String content = "aaades加密测试"; String password = "12345678dd"; // 加密 System.out.println("加密前:" + content); byte[] encryptResult = encrypt(content, password); String encryptResultStr = parseByte2HexStr(encryptResult); System.out.println("加密后:" + encryptResultStr); // 解密 byte[] decryptFrom = parseHexStr2Byte(encryptResultStr); byte[] decryptResult = decrypt(decryptFrom, password); // 解密内容进行解码 String result = new String(decryptResult, UTF8); System.out.println("解密后:" + result); long end= new Date().getTime(); System.out.println(end-begin); }}

注:SecureRandom是生成安全随机数序列,password.getBytes()是种子,只要种子相同,序列就一样,所以解密只要有password就行,可以复原这个序列。

全球ip地址定位平台源码,cmd新建vscode项目,ubuntu 凤凰os,tomcat内存配制,sqlite3表明是变量,土壤占星爬虫阶段的水瓶座,yum 安装php5.6,宁波seo优化款式齐全,网站照片上墙,精仿百度新闻dedecms模板(新版)lzw

委外加工 源码,好用的vscode插件c语言,ubuntu安装ycm,tomcat负载均衡方式,爬虫兴起时间,php爬虫程序403,谷歌seo推广公司防城港lzw

更多java基于AES对称加密算法实现的加密与解密功能示例相关文章请关注PHP中文网!

如果觉得《java基于AES对称加密算法实现的加密与解密功能示例》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。