用java进行base64加密
首先定义一组密钥,加密和解密使用同一组密钥
private final String key = "hahahahahaha";
也可以随机生成密钥
/**
* 生成随机密钥
* @param keySize 密钥大小推荐128 256
* @return
* @throws NoSuchAlgorithmException
*/
public static String generateSecret(int keySize) throws NoSuchAlgorithmException {
KeyGenerator generator = KeyGenerator.getInstance("AES");
generator.init(keySize, new SecureRandom());
SecretKey key = generator.generateKey();
return byteToHexString(key.getEncoded());
}
加密
/**
* 加密
* @param strToEncrypt 待加密字符串
* @param secret 密钥
* @return 密文
* @throws UnsupportedEncodingException
* @throws NoSuchAlgorithmException
* @throws NoSuchPaddingException
* @throws InvalidKeyException
* @throws BadPaddingException
* @throws IllegalBlockSizeException
*/
public static String encrypt(String strToEncrypt, String secret) throws UnsupportedEncodingException, NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, BadPaddingException, IllegalBlockSizeException {
SecretKeySpec secretKey = getKey(secret);
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
return Base64.getEncoder().encodeToString(cipher.doFinal(strToEncrypt.getBytes(StandardCharsets.UTF_8)));
}
解密
/**
* 解密
* @param strToDecrypt 待解密字符串
* @param secret 密钥
* @return 明文
* @throws UnsupportedEncodingException
* @throws NoSuchAlgorithmException
* @throws NoSuchPaddingException
* @throws InvalidKeyException
* @throws BadPaddingException
* @throws IllegalBlockSizeException
*/
public static String decrypt(String strToDecrypt, String secret) throws UnsupportedEncodingException, NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, BadPaddingException, IllegalBlockSizeException {
SecretKeySpec secretKey = getKey(secret);
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5PADDING");
cipher.init(Cipher.DECRYPT_MODE, secretKey);
return new String(cipher.doFinal(Base64.getDecoder().decode(strToDecrypt)));
}
相关文章
- JAVA实现DES加密实现详解
- js md5 中文加密和后端 java md5加密不一致
- java之工厂方法
- Java 环境下使用 AES 加密的特殊问题处理
- JAVA设计模式总结之23种设计模式
- python调用java程序--jpype
- java+s2sh+mysql报刊订阅系统系统
- Java-JVM 自定义类加载器
- 黑马程序员:Java基础总结----java注解
- 关于java.lang.NoSuchMethodError: org.springframework.util.ReflectionUtils.makeAccessible
- SpringMVC整合Shiro,Shiro是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理等功能
- Java中请求HTTPS加密的源代码
- 由Java程序注册机联想到商业版程序的加密方法
- Java泛型专题之5、浅谈Java泛型之<? extends T>和<? super T>的区别
- encryptjs 加密 前端数据(vue 使用 RSA加密、java 后端 RSA解密)
- JAVA浮点数计算精度损失底层原理与解决方案
- Java Regular Expression Remove Leading Zeros Example
- 【Java笔记】常用类和基础API
- java加密解密
- 【知识积累】DES算法之C#加密&Java解密
- python进行des加密解密,而且可以与JAVA进行互相加密解密
- Java Security:Java加密框架(JCA)简要说明
- 简单学JAVA-Java学习方法-JavaSE阶段
- Docker构建Java web应用服务
- java 32位MD5加密的大写字符串
- Java 的发展(历史)轨迹和历史变迁