对称加密
AES:
package com.example.wuji.jiami; import com.sun.org.apache.xml.internal.security.utils.Base64; import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpec; /** * 对称加密 AES */ public class Aes { public static void main(String[] args) throws Exception { String jin = "jinxudong"; //DES加密 只允许密钥是16个字节的 String key = "1234567890asdfgh"; String sf = "AES"; String str = jiami(key, sf, jin); System.out.println("AES加密后:" + str); str = jiemi(key, sf, str); System.out.println("AES解密后:" + str); } /** * 加密 * * @param key 密钥 * @param jiami 加密算法 * @param content 加密内容 * @return * @throws Exception */ private static String jiami(String key, String jiami, String content) throws Exception { Cipher cipher = Cipher.getInstance(jiami); //加密规则 SecretKeySpec secretKey = new SecretKeySpec(key.getBytes(), jiami); //加密模式 加密规则 cipher.init(Cipher.ENCRYPT_MODE, secretKey); //执行加密方法 byte[] l = cipher.doFinal(content.getBytes()); String str = Base64.encode(l); return str; } /** * 解密 * * @param key 密钥 * @param jiami 算法 * @param content 解密内容 * @return * @throws Exception */ private static String jiemi(String key, String jiami, String content) throws Exception { Cipher cipher = Cipher.getInstance(jiami); //加密规则 SecretKeySpec secretKey = new SecretKeySpec(key.getBytes(), jiami); //加密模式 加密规则 解密 DECRYPT cipher.init(Cipher.DECRYPT_MODE, secretKey); //执行解密方法 byte[] str = Base64.decode(content.getBytes()); byte[] ss = cipher.doFinal(str); return new String(ss); } }
DES:
package com.example.wuji.jiami; import com.sun.org.apache.xml.internal.security.utils.Base64; import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpec; /** * 对称加密 DES */ public class Des { public static void main(String[] args) throws Exception { String jin = "jinxudong"; //DES加密 只允许密钥是8个字节的 String key = "12345678"; String sf = "DES"; String str = jiami(key, sf, jin); System.out.println("DES加密后:" + str); str = jiemi(key, sf, str); System.out.println("DES解密后:" + str); } /** * 加密 * * @param key 密钥 * @param jiami 加密算法 * @param content 加密内容 * @return * @throws Exception */ private static String jiami(String key, String jiami, String content) throws Exception { Cipher cipher = Cipher.getInstance(jiami); //加密规则 SecretKeySpec secretKey = new SecretKeySpec(key.getBytes(), jiami); //加密模式 加密规则 cipher.init(Cipher.ENCRYPT_MODE, secretKey); //执行加密方法 byte[] l = cipher.doFinal(content.getBytes()); String str = Base64.encode(l); return str; } /** * 解密 * * @param key 密钥 * @param jiami 算法 * @param content 解密内容 * @return * @throws Exception */ private static String jiemi(String key, String jiami, String content) throws Exception { Cipher cipher = Cipher.getInstance(jiami); //加密规则 SecretKeySpec secretKey = new SecretKeySpec(key.getBytes(), jiami); //加密模式 加密规则 解密 DECRYPT cipher.init(Cipher.DECRYPT_MODE, secretKey); //执行解密方法 byte[] str = Base64.decode(content.getBytes()); byte[] ss = cipher.doFinal(str); return new String(ss); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,携手博客园推出1Panel与Halo联合会员
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· MySQL下200GB大表备份,利用传输表空间解决停服发版表备份问题
· 记一次 .NET某固高运动卡测试 卡慢分析
· 微服务架构学习与思考:微服务拆分的原则
· 记一次 .NET某云HIS系统 CPU爆高分析
· 如果单表数据量大,只能考虑分库分表吗?
· 7 个最近很火的开源项目「GitHub 热点速览」
· DeepSeekV3:写代码很强了
· 记一次 .NET某固高运动卡测试 卡慢分析
· Visual Studio 2022 v17.13新版发布:强化稳定性和安全,助力 .NET 开发提
· MySQL下200GB大表备份,利用传输表空间解决停服发版表备份问题