AES 加密 秒速五厘米 2022-12-29 15:28 173阅读 0赞 import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; import java.security.NoSuchAlgorithmException; import org.apache.tomcat.util.codec.binary.Base64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.security.SecureRandom; /** * @author :zoboy * @Description: * @ Date: Created in 2019-03-20 11:34 */ public class AESUtil { static Logger logger = LoggerFactory.getLogger(AESUtil.class); private static final String KEY_ALGORITHM = "AES"; private static final String DEFAULT_CIPHER_ALGORITHM = "AES/ECB/PKCS5Padding";//默认的加密算法 private static final String ENCRYPT_KEY = "JXU0RTJEJXU4MjJBJXU4QkFGJXU3Njg0JXU3Q0JFJXU1NEMxJXU0RUE3JXU1NEMx"; /** * AES 加密操作 * * @param content 待加密内容 * @param password 加密密码 * @return 返回Base64转码后的加密数据 */ public static String encrypt(String content) { try { Cipher cipher = Cipher.getInstance(DEFAULT_CIPHER_ALGORITHM);// 创建密码器 byte[] byteContent = content.getBytes("utf-8"); cipher.init(Cipher.ENCRYPT_MODE, getSecretKey(ENCRYPT_KEY));// 初始化为加密模式的密码器 byte[] result = cipher.doFinal(byteContent);// 加密 return Base64.encodeBase64String(result);//通过Base64转码返回 } catch (Exception ex) { logger.error("加密错误", ex); } return null; } public static String encrypt(String content, SecretKeySpec secretKeySpec) { try { Cipher cipher = Cipher.getInstance(DEFAULT_CIPHER_ALGORITHM);// 创建密码器 byte[] byteContent = content.getBytes("utf-8"); cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);// 初始化为加密模式的密码器 byte[] result = cipher.doFinal(byteContent);// 加密 return Base64.encodeBase64String(result);//通过Base64转码返回 } catch (Exception ex) { logger.error("加密错误", ex); } return null; } /** * AES 解密操作 * * @param content * @param password * @return */ public static String decrypt(String content, SecretKeySpec secretKeySpec) { try { //实例化 Cipher cipher = Cipher.getInstance(DEFAULT_CIPHER_ALGORITHM); //使用密钥初始化,设置为解密模式 cipher.init(Cipher.DECRYPT_MODE, secretKeySpec); //执行操作 byte[] result = cipher.doFinal(Base64.decodeBase64(content)); return new String(result, "utf-8"); } catch (Exception ex) { logger.error("解密错误", ex); } return null; } public static String decrypt(String content) { try { //实例化 Cipher cipher = Cipher.getInstance(DEFAULT_CIPHER_ALGORITHM); //使用密钥初始化,设置为解密模式 cipher.init(Cipher.DECRYPT_MODE, getSecretKey(ENCRYPT_KEY)); //执行操作 byte[] result = cipher.doFinal(Base64.decodeBase64(content)); return new String(result, "utf-8"); } catch (Exception ex) { logger.error("解密错误", ex); } return null; } /** * 生成加密秘钥 * * @return */ private static SecretKeySpec getSecretKey(final String password) { //返回生成指定算法密钥生成器的 KeyGenerator 对象 KeyGenerator kg = null; SecureRandom random = null; try { random = SecureRandom.getInstance("SHA1PRNG"); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } random.setSeed(password.getBytes()); try { kg = KeyGenerator.getInstance(KEY_ALGORITHM); //AES 要求密钥长度为 128 kg.init(128, random); //生成一个密钥 SecretKey secretKey = kg.generateKey(); System.out.println("aes1 : " + java.util.Base64.getEncoder().encodeToString(secretKey.getEncoded())); SecretKeySpec secretKeySpec = new SecretKeySpec(secretKey.getEncoded(), KEY_ALGORITHM);// 转换为AES专用密钥 String key = java.util.Base64.getEncoder().encodeToString(secretKeySpec.getEncoded()); System.out.println("aes2 : " + key); return secretKeySpec; } catch (NoSuchAlgorithmException ex) { logger.error("生成加密秘钥错误", ex); } return null; } public static void main(String[] args) { String ss = "h2fJi/f9o6nEcbPxko9m61=="; SecretKeySpec secretKeySpec = getSecretKey(ss); // byte[] keys = java.util.Base64.getDecoder().decode(ss); // SecretKeySpec secretKeySpec = new SecretKeySpec(keys, KEY_ALGORITHM);// 转换为AES专用密钥 String key = java.util.Base64.getEncoder().encodeToString(secretKeySpec.getEncoded()); System.out.println("aes key : " + key); String encrypt = "zhonggsasda"; String encryptStr = encrypt(encrypt, secretKeySpec); System.out.println("encryptStr : " + encryptStr); String decryptStr = decrypt(encryptStr, secretKeySpec); System.out.println("decryptStr : " + decryptStr); } public static String replaceidCard(String idCard) { if (idCard == null || "".equals(idCard)) return null; StringBuilder sb = new StringBuilder(idCard); sb.replace(6, 14, "********"); return sb.toString(); } public static String replacePhone(String phone) { if (phone == null || "".equals(phone)) return null; StringBuilder sb = new StringBuilder(phone); sb.replace(4, 8, "****"); return sb.toString(); } }
相关 AES加密 一、AES是什么 AES高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府 我就是我/ 2023年10月03日 17:58/ 0 赞/ 22 阅读
相关 AES 加密 util.encryption = function (params) \{ let \{ data, param, key \} = params const res 悠悠/ 2023年02月18日 03:05/ 0 赞/ 21 阅读
相关 AES 加密 import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.c 秒速五厘米/ 2022年12月29日 15:28/ 0 赞/ 174 阅读
相关 AES加密 package com.test.util.encrypt; import org.apache.commons.lang3.StringUtil 小咪咪/ 2022年07月15日 20:43/ 0 赞/ 238 阅读
相关 AES加密 AES加密是一种对称加密,即加密秘钥与解密秘钥相同 示例如下: public class Aes { //算法 private st 偏执的太偏执、/ 2022年04月14日 05:14/ 0 赞/ 265 阅读
相关 AES加密 import java.io.UnsupportedEncodingException; import java.security.InvalidKeyExce 小灰灰/ 2022年03月09日 14:46/ 0 赞/ 278 阅读
相关 AES加密 AES技术是一种对称的分组加密技术,使用128位分组加密数据,提供比WEP/TKIPS的RC4算法更高的加密强度。AES的加密码表和解密码表是分开的,并且支持子密钥加密,这种 ゞ 浴缸里的玫瑰/ 2022年02月15日 00:09/ 0 赞/ 286 阅读
相关 Python AES加密 与 JS AES加密 import execjs from Crypto.Cipher import AES from binascii import b2a_hex, a2 「爱情、让人受尽委屈。」/ 2021年12月20日 11:55/ 0 赞/ 371 阅读
相关 AES加密 介绍 AES是一种对称加密,使用同一个密钥来加密和解密一段密文 安装 pip install pycryptodome 基础语法 aes 今天药忘吃喽~/ 2021年12月09日 04:49/ 0 赞/ 324 阅读
相关 AES加密算法 AES加密算法是对称密钥加密中最流行的算法之一 这是我转自CSDN博客的详细解析: 一般的加密通常都是块加密,如果要加密超过块大小的数据,就需要涉及填充和链 比眉伴天荒/ 2021年09月10日 16:14/ 0 赞/ 507 阅读
还没有评论,来说两句吧...