导包

     <!-- apache 加密工具组件 --><dependency><groupId>commons-codec</groupId><artifactId>commons-codec</artifactId><version>1.14</version></dependency>

工具类

import java.io.UnsupportedEncodingException;import org.apache.commons.codec.binary.Base64;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.codec.net.URLCodec;/*** 加密解密,编码解码工具类** @author ycs*/
public class YcsCodeCUtils {public static final String CHARSET = "utf-8";private static final Base64 base64 = new Base64();private static final URLCodec urlCodec = new URLCodec();/*** 使用base64加密** @param data* @return*/public static String encodeByBase64(byte[] data) {return base64.encodeAsString(data);}/*** 使用base64解密** @param str* @return*/public static byte[] decodeByBase64(String str) {return base64.decode(str);}/*** 使用md5加密** @param data* @return*/public static String encodeByMd5(String data) {return DigestUtils.md5Hex(data);}/*** 使用sha1加密** @param data* @return*/public static String encodeBySha1(byte[] data) {return DigestUtils.sha1Hex(data);}/*** url链接编码** @param url* @return*/public static String encodeUrl(String url) {//         * 在因特网上传送URL,只能采用ASCII字符集
//         * 也就是说URL只能使用英文字母、阿拉伯数字和某些标点符号,不能使用其他文字和符号
//         * 中文需要经过编码才可以用于URLtry {return urlCodec.encode(url, CHARSET);} catch (UnsupportedEncodingException e) {throw new RuntimeException("URL链接编码失败!url = " + url + "\n" + e);}}/*** url链接解码** @param url* @return*/public static String decodeUrl(String url) {// 主要解码编码之后的中文try {return urlCodec.decode(url, CHARSET);} catch (Exception e) {throw new RuntimeException("URL链接解码失败!url = " + url + "\n" + e);}}
}

测试

/*** @author ycs*/
public class SelfTest {private File desktopDir;/*** 系统桌面路径*/private String desktopPath;@Beforepublic void desktopDirTest() {desktopDir = FileSystemView.getFileSystemView().getHomeDirectory();desktopPath = desktopDir.getAbsolutePath();}@Testpublic void CodeCTest() throws Exception {System.out.println(YcsCodeCUtils.encodeUrl("https://test.com?name=张三"));System.out.println(YcsCodeCUtils.decodeUrl("https://oao1ht.axshare.com/#id=tj37hp&p=%E3%80%90%E8%87%AA%E8%90%A5_%E8%B4%B4%E7%89%8C%E3%80%91%E7%AD%9B%E9%80%89%E9%A1%B9%E4%BC%98%E5%8C%96-%E5%B7%B2%E7%A1%AE%E8%AE%A4-2%E4%B8%8A%E7%BA%BF"));InputStream inputStream = new FileInputStream(desktopPath + "/entity.jpg");byte[] data = new byte[inputStream.available()];inputStream.read(data);String s = YcsCodeCUtils.encodeByBase64(data);byte[] bytes = YcsCodeCUtils.decodeByBase64(s);YcsFileUtils.writeBytes(bytes, desktopPath + "/base64.jpg");inputStream.close();}
}

java 加密解密,编码解码工具类相关推荐

  1. JavaScript Eval Encode/Decode JavaScript Eval 在线加密/解密, 编码/解码工具

    eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fr ...

  2. URL编码解码工具类

    /****************************************************************************** * CREATETIME : 2016年 ...

  3. Java Base64加密解密编码解码

    起因 最近因为项目要做等保,需要对用户提交的字段进行加密存储,但是还需要做查询,所以需要能解密. 办法 目前打算采用rsa非对称加密保存数据,实现数据加密和解密,但是很尴尬的发现生成的公钥和秘钥居然是 ...

  4. 在Java中DES加密/解密的实现[工具类]

    使用前需导入Crypto包: <dependency><groupId>org.springframework.security</groupId><arti ...

  5. 条形码和二维码编码解码工具类源码

    有一个好的工具,会让你的开发事半功倍.再将讲这个工具类之前,我先给小白补充一点条形码和二维码(以下基础知识选自,我本科阶段的一本教材:<物联网导论>(刘云浩 编著).有对物联网感兴趣的,可 ...

  6. Java 加密解密之对称加密算法PBE

    JAVA  加密解密系列 Java 加密解密基础 Java byte数组与十六进制字符串互转 Java BASE64加密解密 Java 加密解密之消息摘要算法(MD5 SHA MAC) Java 加密 ...

  7. Java(35):Java Base64编码和解码工具类

    Java Base64编码和解码工具类 Base64Util工具类: package com.ciphergateway.utils; import java.io.UnsupportedEncodi ...

  8. Java与Winform进行AES加解密数据传输的工具类与对应关系和示例

    场景 Android+Java中使用Aes对称加密的工具类与使用: Android+Java中使用Aes对称加密的工具类与使用_霸道流氓气质的博客-CSDN博客 上面讲的Java与安卓进行数据传输时使 ...

  9. 分享万能java字符串编码转换工具类

    代码下载地址:http://www.zuidaima.com/share/1795356301560832.htm 原文:分享万能java字符串编码转换工具类 package com.zuidaima ...

  10. java 项目中常用的工具类总结

    1.文件 1.根据图片的链接,下载图片 package com.lingxu.module.BigDataJoinMessage.util;import java.io.FileOutputStrea ...

最新文章

  1. 硬件基础:电阻作用及产品应用
  2. 插值搜索——本质和二分无异,是利用数据分布的规律来定查找点,其基本假设是数据分布均匀...
  3. elasticsearch ik分词插件配置自定义分词词典
  4. MySQL 高级 - 触发器 - 介绍
  5. python科学计数法输出_python不以科学计数法输出的实例方法总结
  6. why my CREATE_OW will not generate OSSET entry in OB buffer
  7. python 如何检验数据正态分布_小样本数据的正态性检验用python怎么写?
  8. gulp-rev-append md5版本号
  9. 服务器怎么修改远程桌面端口号,windows系统如何修改默认的远程桌面端口 如何更改服务器远程端口...
  10. NVIDIA Jetson Xavier NX载板 RTSO-6002使用TF(MicroSD)卡重新刷机
  11. 其实 Gradle Transform 就是个纸老虎 —— Gradle 系列(4)
  12. 转 C++异常机制的实现方式和开销分析 白杨 http://baiy.cn
  13. 机器学习下的持续交付
  14. PeopleSoft
  15. ACE+TAO 通信中间件
  16. “机器学习实战“刻意练习2/8周
  17. 红米路由器ac2100怎样设置ipv6_红米路由器AC2100怎么样
  18. 联想小新蓝屏问题解决方法三步走!
  19. 无线网络中的单跳和多跳
  20. 【前端面试题】—21道有关移动端的面试题

热门文章

  1. Html实现Excel锁定表头效果
  2. 劢领AT| 五分钟,零基础玩转Wing中国电信物联网开放平台
  3. 8个微信小程序UI组件框架
  4. win7计算机怎么录屏,Win7系统屏幕录制功能在哪里?Win7系统屏幕录制功能的使用教程...
  5. SEO前端篇(二)关键词
  6. 计算机课ppt免费,第1课 认识计算机ppt课件.ppt
  7. .log 合并或 .txt 合并
  8. IGH_Master主站配置驱动伺服电机和变频器总结
  9. catia逆向建模步骤_逆向流程及CATIA逆向的一些技巧
  10. labView2015 学习之项目创建模板篇