
java加密解密
发布日期:2025-04-02 01:10:17
浏览次数:9
分类:精选文章
本文共 3394 字,大约阅读时间需要 11 分钟。
Base64编码与DES加密解密算法
Base64编码是网络上最常见的用于传输8位字节代码的编码方式之一,可用于在HTTP环境下传递较长的标识信息。其运算原理基于计算机是8位存储的特点,通过将24位字符分解为4组6位的字符进行处理,并为每组高位补0,转换成ascii码后根据RFC2045~RFC2049表进行转换。
Base64编码示例
public class Test { public static void main(String[] args) throws Exception { Test test = new Test(); test.testEncrypt(); test.testDecrypt(); } public void testEncrypt() throws Exception { String pwd = "123456"; byte[] i = pwd.getBytes(); String input = new BASE64Encoder().encodeBuffer(i); System.out.println(input); } public void testDecrypt() throws Exception { String pwd = "MTIzNDU2"; byte[] o = new BASE64Decoder().decodeBuffer(pwd); String output = new String(o); System.out.println(output); }}
输出结果
123456的Base64编码为:MTIzNDU2解密后的结果为:123456
DES加密算法
DES(Data Encryption Standard)是一种对称加密算法,加密和解密均使用相同密钥进行处理。
public class DESTest { public static void main(String[] args) { DESTest t = new DESTest(); String data = "123456"; String encode_data = t.encode(data); System.out.println(encode_data); String decode_data = t.decode(encode_data); System.out.println(decode_data); } public static final String ALGORITHM_DES = "DES"; public static final String SIGN_KEY = "20170313EHR"; public String encode(String data) { if (data == null) { return null; } try { String key = SIGN_KEY; DESKeySpec dks = new DESKeySpec(key.getBytes()); SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES"); Key secretKey = keyFactory.generateSecret(dks); Cipher cipher = Cipher.getInstance(ALGORITHM_DES); cipher.init(Cipher.ENCRYPT_MODE, secretKey); byte[] bytes = cipher.doFinal(data.getBytes()); return byte2str(bytes); } catch (Exception e) { e.printStackTrace(); return data; } } public String decode(String data) { if (data == null) { return null; } try { String key = SIGN_KEY; DESKeySpec dks = new DESKeySpec(key.getBytes()); SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES"); Key secretKey = keyFactory.generateSecret(dks); Cipher cipher = Cipher.getInstance(ALGORITHM_DES); cipher.init(Cipher.DECRYPT_MODE, secretKey); byte[] bytes = cipher.doFinal(str2byte(data.getBytes())); return new String(bytes); } catch (Exception e) { e.printStackTrace(); return data; } } private static byte[] str2byte(byte[] b) { if ((b.length % 2) != 0) { throw new IllegalArgumentException(); } byte[] b2 = new byte[b.length / 2]; for (int n = 0; n < b.length; n += 2) { String item = new String(b, n, 2); b2[n / 2] = (byte) Integer.parseInt(item, 16); } return b2; } private static String byte2str(byte[] b) { StringBuilder hs = new StringBuilder(); for (int n = 0; n < b.length; n++) { String stmp = Integer.toHexString(b[n] & 0xFF); if (stmp.length() == 1) { hs.append('0'); } hs.append(stmp); } return hs.toString().toUpperCase(); }}
编码与解密后的结果
- 编码:
1730D210F056D4D8123456
- 解密:
123456
发表评论
最新留言
关注你微信了!
[***.104.42.241]2025年04月18日 12时03分43秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
2025版最新黑客学习网站(非常详细),零基础入门到精通,看这一篇就够了
2025-03-30
2025版网络工程11个高含金量证书(非常详细)零基础入门到精通,收藏这篇就够了
2025-03-30
2025自学成为黑客必读的5本书籍,带你从小白进阶成大佬
2025-03-30
20万高薪专业-网络安全(非常详细)零基础入门到精通,收藏这一篇就够了
2025-03-30
23张图告诉你组建一个网络需要用到哪些硬件设备?路由器、交换机、防火墙是不是就够了?
2025-03-30
24 WEB漏洞-文件上传之WAF绕过及安全修复_阿里云盾waf绕过怎么修复
2025-03-30
#12 btrfs文件系统
2025-03-30
#3194. 去月球
2025-03-30
24.线程
2025-03-30
#Leetcode# 28. Implement strStr()
2025-03-30
$route 和 $router详解、区别、示例代码
2025-03-30
$scope angular在controller之外调用
2025-03-30
&和&&的区别
2025-03-30
064:vue+openlayers根据坐标来显示点、线段、圆形、多边形
2025-03-30
(ios实战)单个ViewControl适配不同ios版本xib文件实现
2025-03-30
(Leetcode-字符串-2) 字符串运算
2025-03-30
(type interface {}) to type string
2025-03-30