如何在Java项目中实现一个DES加密算法?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
Base64.java
package com.mstf.des; import java.io.UnsupportedEncodingException; public class Base64 { public static String encode(String data) { return new String(encode(data.getBytes())); } public static String decode(String data) { try { return new String(decode(data.toCharArray()),"utf-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); return null; } } private static char[] alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" .toCharArray(); private static byte[] codes = new byte[256]; static { for (int i = 0; i < 256; i++) { codes[i] = -1; } for (int i = 'A'; i <= 'Z'; i++) { codes[i] = (byte) (i - 'A'); } for (int i = 'a'; i <= 'z'; i++) { codes[i] = (byte) (26 + i - 'a'); } for (int i = '0'; i <= '9'; i++) { codes[i] = (byte) (52 + i - '0'); } codes['+'] = 62; codes['/'] = 63; } public static char[] encode(byte[] data) { char[] out = new char[((data.length + 2) / 3) * 4]; for (int i = 0, index = 0; i < data.length; i += 3, index += 4) { boolean quad = false; boolean trip = false; int val = (0xFF & (int) data[i]); val <<= 8; if ((i + 1) < data.length) { val |= (0xFF & (int) data[i + 1]); trip = true; } val <<= 8; if ((i + 2) < data.length) { val |= (0xFF & (int) data[i + 2]); quad = true; } out[index + 3] = alphabet[(quad ? (val & 0x3F) : 64)]; val >>= 6; out[index + 2] = alphabet[(trip ? (val & 0x3F) : 64)]; val >>= 6; out[index + 1] = alphabet[val & 0x3F]; val >>= 6; out[index + 0] = alphabet[val & 0x3F]; } return out; } public static byte[] decode(char[] data) { int tempLen = data.length; for (int ix = 0; ix < data.length; ix++) { if ((data[ix] > 255) || codes[data[ix]] < 0) { --tempLen; } } int len = (tempLen / 4) * 3; if ((tempLen % 4) == 3) { len += 2; } if ((tempLen % 4) == 2) { len += 1; } byte[] out = new byte[len]; int shift = 0; int accum = 0; int index = 0; for (int ix = 0; ix < data.length; ix++) { int value = (data[ix] > 255) ? -1 : codes[data[ix]]; if (value >= 0) { accum <<= 6; shift += 6; accum |= value; if (shift >= 8) { shift -= 8; out[index++] = (byte) ((accum >> shift) & 0xff); } } } if (index != out.length) { throw new Error("Miscalculated data length (wrote " + index + " instead of " + out.length + ")"); } return out; }}
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
软考中级精品资料免费领
- 历年真题答案解析
- 备考技巧名师总结
- 高频考点精准押题
- 资料下载
- 历年真题
193.9 KB下载数265
191.63 KB下载数245
143.91 KB下载数1148
183.71 KB下载数642
644.84 KB下载数2756
相关文章
发现更多好内容- Java 中常见的比较操作符有哪些?(Java比较操作符有哪些)
- 在 Java 中,Integer 究竟有哪些作用呢?(java中integer的作用是什么)
- Java 实体类如何进行赋值操作?(java实体类怎么赋值)
- Java 中 switch case 的具体用法有哪些?(switchcase在java中的用法)
- 如何在 Java EMqtt 中实现消息确认机制?(Java EMqtt怎样实现消息确认机制)
- Java 性能调优的有效手段有哪些?(Java性能调优有何有效手段)
- 探讨Uncomtrade数据库的安全防护措施
- Java 如何获取某个接口的实现类?(Java怎么获取某个接口的实现类)
- Java中如何正确使用 collections.shuffle 方法?(Java中collections.shuffle怎么使用)
- Java Swing 中常用的布局有哪些?(java swing常用布局有哪些)
猜你喜欢
AI推送时光机如何在Java项目中实现一个DES加密算法
后端开发2023-05-31
如何在java项目中实现一个ECC加密算法
后端开发2023-05-31
如何在Java项目中实现一个非对称加密算法
后端开发2023-05-31
RSA加密算法如何在java项目中实现
后端开发2023-05-31
如何在Java项目中实现一个时间轮算法
后端开发2023-05-31
MD5加密算法如何在java项目中运用
后端开发2023-05-31
如何在Java项目中实现一个快速查找算法
后端开发2023-05-31
如何在java项目中实现一个插入排序算法
后端开发2023-05-31
SHA-256加密如何在Java 项目中实现
后端开发2023-05-31
如何在java项目中实现一个随机数生产算法
后端开发2023-05-31
Java项目中AES与DES的加密解密怎么利用Hutool实现
后端开发2023-05-31
FloydWarshall算法如何在java项目中实现
后端开发2023-05-31
如何在Java与Python项目中实现一个冒泡排序算法
后端开发2023-05-31
怎么在java项目中实现一个海盗算法
后端开发2023-05-31
在java项目中实现一个冒泡排算法的方法
后端开发2023-05-31
怎么在Java项目中实现一个堆排序算法
后端开发2023-05-31
如何在Java项目中利用余弦方法实现一个相似度计算算法
后端开发2023-05-31
在Java项目中如何实现一个同步锁
后端开发2023-05-31
怎么在Java项目中实现一个求逆矩阵算法
后端开发2023-05-31
如何在C++项目中实现一个取余运算
后端开发2023-06-06
咦!没有更多了?去看看其它编程学习网 内容吧