DES对称加密
import java.security.Key; import java.security.SecureRandom; import java.util.Base64; import javax.crypto.Cipher; import javax.crypto.KeyGenerator; public class Des { public static Key setKey(String strKey) { Key key = null; try { KeyGenerator generator = KeyGenerator.getInstance("DES"); generator.init(new SecureRandom(strKey.getBytes())); // 根据参数生成key key = generator.generateKey(); } catch (Exception e) { e.printStackTrace(); } return key; } /** * @param source 编码内容 * @param key 密钥 * @param charSet 编码格式 * @return */ public static String encrypt(String source, String key, String charSet) { String encrypt = null; try { byte[] ret = encrypt(source.getBytes(charSet), key); encrypt = new String(Base64.getEncoder().encode(ret)); } catch (Exception e) { e.printStackTrace(); encrypt = null; } return encrypt; } /** * @param encryptedData 解码内容 * @param key 密钥 * @param charSet 编码格式 * @return */ public static String decrypt(String encryptedData, String key, String charSet) { String descryptedData = null; try { byte[] ret = descrypt(Base64.getDecoder().decode(encryptedData.getBytes()), key); descryptedData = new String(ret, charSet); } catch (Exception e) { e.printStackTrace(); descryptedData = null; } return descryptedData; } private static byte[] encrypt(byte[] primaryData, String key) { Key desKey = setKey(key); try { Cipher cipher = Cipher.getInstance("DES"); // Cipher对象实际完成加密操作 cipher.init(Cipher.ENCRYPT_MODE, desKey); // 用密钥初始化Cipher对象(加密) return cipher.doFinal(primaryData); } catch (Exception e) { e.printStackTrace(); return null; } } private static byte[] descrypt(byte[] encryptedData, String key) { Key desKey = setKey(key); try { Cipher cipher = Cipher.getInstance("DES"); // Cipher对象实际完成解密操作 cipher.init(Cipher.DECRYPT_MODE, desKey); // 用密钥初始化Cipher对象(解密) return cipher.doFinal(encryptedData); } catch (Exception e) { e.printStackTrace(); return null; } } public static void main(String[] args) { String code = "hello"; String key = "thisisakey"; String unicode = "utf-8"; String encrypt = encrypt(code, key, unicode); String decrypt = decrypt(encrypt, key, unicode); System.out.println("原内容:" + code); System.out.println("加密:" + encrypt); System.out.println("解密:" + decrypt); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?