接上篇java Base64算法

根据之前过程使用base64加解密,所以写成了工具类。

代码示例;

  1. public class Base64Util {
  2. private static Logger logger = LoggerFactory.getLogger(Base64Util.class);
  3. /**
  4. * @param
  5. * @return String
  6. * @description BASE64解码
  7. */
  8. public static byte[] decode(String s) {
  9. if (StringUtils.isEmpty(s)) {
  10. return null;
  11. }
  12. BASE64Decoder decoder = new BASE64Decoder();
  13. try {
  14. return decoder.decodeBuffer(s);
  15. } catch (Exception e) {
  16. return null;
  17. }
  18. }
  19. /**
  20. * @param
  21. * @return String
  22. * @description base64编码
  23. */
  24. public static String encode(byte[] s) {
  25. if (s == null) {
  26. return null;
  27. }
  28. return (new sun.misc.BASE64Encoder()).encode(s);
  29. }
  30. /**
  31. * @param filePath
  32. * @param base64Str
  33. */
  34. public static void base64ToFile(String base64Str,String filePath) {
  35. System.err.println(base64Str.length());
  36. try {
  37. byte[] b = Base64.decode(base64Str);
  38. for (int i = 0; i < b.length; ++i) {
  39. if (b[i] < 0) {// 调整异常数据
  40. b[i] += 256;
  41. }
  42. }
  43. // 生成jpeg图片
  44. FileUtils.writeByteArrayToFile(new File(filePath), b);
  45. /**
  46. * 生成缩略图
  47. * 若图片横比200小,高比300小,不变
  48. * 若图片横比200小,高比300大,高缩小到300,图片比例不变
  49. * 若图片横比200大,高比300小,横缩小到200,图片比例不变
  50. * 若图片横比200大,高比300大,图片按比例缩小,横为200或高为300
  51. */
  52. System.err.println("OK");
  53. } catch (Exception e) {
  54. System.out.println("error");
  55. }
  56. }
  57. /**
  58. * @param outFilePath 输出文件的地址
  59. * @param file 需要输出的文件
  60. */
  61. public static void saveMultipartFileToFile(MultipartFile file, String outFilePath) throws BusinessException, IOException {
  62. FileOutputStream os = new FileOutputStream(outFilePath);
  63. try {
  64. byte[] data =file.getBytes();
  65. for (int i = 0; i < data.length; ++i) {
  66. if (data[i] < 0) {// 调整异常数据
  67. data[i] += 256;
  68. }
  69. }
  70. os.write(data);
  71. os.close();
  72. } catch (Exception e) {
  73. throw new BusinessException("图片转换失败");
  74. }finally {
  75. os.flush();
  76. os.close();
  77. }
  78. }
  79. /**
  80. * base64 转 Multipart
  81. * @param base64
  82. * @return
  83. */
  84. public static MultipartFile base64ToMultipart(String base64) {
  85. try {
  86. String[] baseStr = base64.split(",");
  87. BASE64Decoder decoder = new BASE64Decoder();
  88. byte[] b = new byte[0];
  89. b = decoder.decodeBuffer(baseStr[1]);
  90. for(int i = 0; i < b.length; ++i) {
  91. if (b[i] < 0) {
  92. b[i] += 256;
  93. }
  94. }
  95. return new BASE64DecodedMultipartFile(b, baseStr[0]);
  96. } catch (IOException e) {
  97. logger.error(e.getMessage());
  98. return null;
  99. } catch (ArrayIndexOutOfBoundsException a){
  100. logger.error(a.getMessage());
  101. return null;
  102. }
  103. }
  104. }

java base64加解密的更多相关文章

  1. Java Base64 加解密

    public class base64EncryAndDecry { public static final String CODES = "ABCDEFGHIJKLMNOPQRSTUVWX ...

  2. Java Des加解密方法(c#加密Java解密)

    最近我们用Java把一个用.net编写的老系统重新做了翻版,但是登录还是用.net的登录.这样就会遇到一个比较棘手的问题,我们登录用的cookie信息都是.net用des加密的,但我们不得不用Java ...

  3. QuickBase64 - Android 下拉通知栏快捷base64加解密工具

    Android Quick Setting Tile Base64 Encode/Decode Tool Android 下拉通知栏快捷 base64 加解密,自动将剪切板的内容进行 base64 E ...

  4. JAVA加解密 -- Base64加解密

    Base64算法实现:可以将任意的字节数组数据,通过算法,生成只有(大小写英文.数字.+./)(一共64个字符)内容表示的字符串数据. private static final String str ...

  5. java之BASE64加解密

    1.简介 Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,采用Base64编码具有不可读性,即所编码的数据不会被人用肉眼所直接看到. 注:位于jdk的java.util包中. 2. ...

  6. 两种JavaScript的AES加密方式(可与Java相互加解密)

    由于JavaScript属于弱类型脚本语言,因此当其与强类型的后台语言进行数据交互时会产生各种问题,特别是加解密的操作.本人由于工作中遇到用js与Java进行相互加解密的问题,在网上查了很多资料及代码 ...

  7. java RSA加解密以及用途

    在公司当前版本的中间件通信框架中,为了防止非授权第三方和到期客户端的连接,我们通过AES和RSA两种方式的加解密策略进行认证.对于非对称RSA加解密,因为其性能耗费较大,一般仅用于认证连接,不会用于每 ...

  8. DES 算法的 C++ 与 JAVA 互相加解密

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...

  9. password学3——Java BASE64加密解密

    Base64是网络上最常见的用于传输8Bit字节代码的编码方式之中的一个,大家能够查看RFC2045-RFC2049.上面有MIME的具体规范.Base64编码可用于在HTTP环境下传递较长的标识信息 ...

随机推荐

  1. NB-IoT DTU是什么 NB-IoT的优势有哪些

    NB-IoT DTU是什么 NB-IoT DTU是一种采用NB-IoT技术实现数据远距离无线传输功能的终端设备,采用工业级的硬件设施和工业级的32位高性能通信处理器,工业级的无线数据传输模块,可以自动 ...

  2. hello world .net core 微服务框架 Viper

    1.Viper是什么? Viper 是.NET平台下的Anno微服务框架的一个示例项目.入门简单.安全.稳定.高可用.全平台可监控.底层通讯可以随意切换thrift grpc. 自带服务发现.调用链追 ...

  3. python给图片打马赛克

    图片马赛克 关注公众号"轻松学编程"了解更多. 导包 import numpy as np import matplotlib.pyplot as plt %matplotlib ...

  4. Hadoop高可用

    一.原因 - NameNode是HDFS的黑心配置HDFS有事hadoop的核心组件 NameNode 在Hadoop及群众至关重要 - NameNode的宕机导致集群的不可用 二.解决方案 其中 N ...

  5. Linux的进程、线程、文件描述符是什么

    说到进程,恐怕面试中最常见的问题就是线程和进程的关系了,那么先说一下答案:在 Linux 系统中,进程和线程几乎没有区别. Linux 中的进程就是一个数据结构,看明白就可以理解文件描述符.重定向.管 ...

  6. js 元素添加多个监听

    function addListener(element,e,fn){     if(element.addEventListener){         element.addEventListen ...

  7. layui下拉框实现级联

    <!DOCTYPE html><html><head> <meta charset="utf-8" /> <link href ...

  8. nginx&http 第四章 ngx http代理 && 转载

    Nginx访问上游服务器的流程大致分以下几个阶段:启动upstream.连接上游服务器.向上游发送请求.接收上游响应(包头/包体).结束请求. upstream相关的两个重要数据结构ngx_http_ ...

  9. epoll源码解析翻译------说使用了mmap的都是骗子

    本文地址 //https://www.cnblogs.com/l2017/p/10830391.html //https://blog.csdn.net/li_haoren select poll e ...

  10. 一篇文章了解_selenium

    (一)安装selenium 2018年10月7日 星期日 11:14 安装python 打开 Python官网,找到"Download", 在其下拉菜单中选择自己的平台(Windo ...