java base64加解密
接上篇java Base64算法。
根据之前过程使用base64加解密,所以写成了工具类。
代码示例;
public class Base64Util {
private static Logger logger = LoggerFactory.getLogger(Base64Util.class);
/**
* @param
* @return String
* @description BASE64解码
*/
public static byte[] decode(String s) {
if (StringUtils.isEmpty(s)) {
return null;
}
BASE64Decoder decoder = new BASE64Decoder();
try {
return decoder.decodeBuffer(s);
} catch (Exception e) {
return null;
}
}
/**
* @param
* @return String
* @description base64编码
*/
public static String encode(byte[] s) {
if (s == null) {
return null;
}
return (new sun.misc.BASE64Encoder()).encode(s);
}
/**
* @param filePath
* @param base64Str
*/
public static void base64ToFile(String base64Str,String filePath) {
System.err.println(base64Str.length());
try {
byte[] b = Base64.decode(base64Str);
for (int i = 0; i < b.length; ++i) {
if (b[i] < 0) {// 调整异常数据
b[i] += 256;
}
}
// 生成jpeg图片
FileUtils.writeByteArrayToFile(new File(filePath), b);
/**
* 生成缩略图
* 若图片横比200小,高比300小,不变
* 若图片横比200小,高比300大,高缩小到300,图片比例不变
* 若图片横比200大,高比300小,横缩小到200,图片比例不变
* 若图片横比200大,高比300大,图片按比例缩小,横为200或高为300
*/
System.err.println("OK");
} catch (Exception e) {
System.out.println("error");
}
}
/**
* @param outFilePath 输出文件的地址
* @param file 需要输出的文件
*/
public static void saveMultipartFileToFile(MultipartFile file, String outFilePath) throws BusinessException, IOException {
FileOutputStream os = new FileOutputStream(outFilePath);
try {
byte[] data =file.getBytes();
for (int i = 0; i < data.length; ++i) {
if (data[i] < 0) {// 调整异常数据
data[i] += 256;
}
}
os.write(data);
os.close();
} catch (Exception e) {
throw new BusinessException("图片转换失败");
}finally {
os.flush();
os.close();
}
}
/**
* base64 转 Multipart
* @param base64
* @return
*/
public static MultipartFile base64ToMultipart(String base64) {
try {
String[] baseStr = base64.split(",");
BASE64Decoder decoder = new BASE64Decoder();
byte[] b = new byte[0];
b = decoder.decodeBuffer(baseStr[1]);
for(int i = 0; i < b.length; ++i) {
if (b[i] < 0) {
b[i] += 256;
}
}
return new BASE64DecodedMultipartFile(b, baseStr[0]);
} catch (IOException e) {
logger.error(e.getMessage());
return null;
} catch (ArrayIndexOutOfBoundsException a){
logger.error(a.getMessage());
return null;
}
}
}
java base64加解密的更多相关文章
- Java Base64 加解密
public class base64EncryAndDecry { public static final String CODES = "ABCDEFGHIJKLMNOPQRSTUVWX ...
- Java Des加解密方法(c#加密Java解密)
最近我们用Java把一个用.net编写的老系统重新做了翻版,但是登录还是用.net的登录.这样就会遇到一个比较棘手的问题,我们登录用的cookie信息都是.net用des加密的,但我们不得不用Java ...
- QuickBase64 - Android 下拉通知栏快捷base64加解密工具
Android Quick Setting Tile Base64 Encode/Decode Tool Android 下拉通知栏快捷 base64 加解密,自动将剪切板的内容进行 base64 E ...
- JAVA加解密 -- Base64加解密
Base64算法实现:可以将任意的字节数组数据,通过算法,生成只有(大小写英文.数字.+./)(一共64个字符)内容表示的字符串数据. private static final String str ...
- java之BASE64加解密
1.简介 Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,采用Base64编码具有不可读性,即所编码的数据不会被人用肉眼所直接看到. 注:位于jdk的java.util包中. 2. ...
- 两种JavaScript的AES加密方式(可与Java相互加解密)
由于JavaScript属于弱类型脚本语言,因此当其与强类型的后台语言进行数据交互时会产生各种问题,特别是加解密的操作.本人由于工作中遇到用js与Java进行相互加解密的问题,在网上查了很多资料及代码 ...
- java RSA加解密以及用途
在公司当前版本的中间件通信框架中,为了防止非授权第三方和到期客户端的连接,我们通过AES和RSA两种方式的加解密策略进行认证.对于非对称RSA加解密,因为其性能耗费较大,一般仅用于认证连接,不会用于每 ...
- DES 算法的 C++ 与 JAVA 互相加解密
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...
- password学3——Java BASE64加密解密
Base64是网络上最常见的用于传输8Bit字节代码的编码方式之中的一个,大家能够查看RFC2045-RFC2049.上面有MIME的具体规范.Base64编码可用于在HTTP环境下传递较长的标识信息 ...
随机推荐
- PHP中双引号和单引号的区别
在PHP中,字符串数值有单引号和双引号两种. 区别: 单引号:系统不做复杂的转义.只转义\'和\\两种转义,其他的按原样输出. 双引号:则转义比较多,\",\\,\r,\t,\n,\$等. ...
- Java关键字——break和continue、this等
想知道break用于if和while的区别是什么? break是跳出最近的循环.if是逻辑判断,不是循环,所以会跳出if最近的循环: break:终止退出,用于do-while.while.for中时 ...
- cmd中执行mvn help:system报错的解决办法
[ERROR] No plugin found for prefix 'help' in the current project and in the plugin groups [org.apach ...
- xlwt模块,(Excel表格)
1. 安装模块 #pip install xlwt 2. 简单例子打印excel import xlwt # 创建一个workbook 设置编码 workbook = xlwt.Workbook(en ...
- python重要第三方库pandas加载数据(详解)
Pandas数据加载 关注公众号"轻松学编程"了解更多. pandas提供了一些用于将表格型数据读取为DataFrame对象的函数,其中read_csv和read_table这两个 ...
- Docker(8)- docker search 命令详解
如果你还想从头学起 Docker,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1870863.html 作用 从 Docker Hub ...
- 美团笔试题_ACM最多队伍
题目: 选择队伍参加ACM比赛,可以选择的人由N+M组成,N代表N个擅长算法的人,M代表M个擅长编程的人,选择要求:每个队伍三个人,每个队伍中至少有一个擅长算法的人,至少有一个擅长编程的人.求可以组成 ...
- day88:luffy:支付宝同步结果通知&接收异步支付结果&用户购买记录&我的订单
目录 1.支付宝同步结果通知 2.用户购买记录表 3.接受异步支付结果 4.善后事宜 5.我的订单 1.支付宝同步结果通知 1.get请求支付宝,支付宝返回给你的参数 当用户输入用户名和密码确认支付的 ...
- 水题挑战6: CF1444A DIvision
A. Division time limit per test1 second memory limit per test512 megabytes inputstandard input outpu ...
- vue-count-to(简单好用的一个数字滚动插件)
vue-count-to是一个无依赖,轻量级的vue组件,可覆盖easingFn. 1. 你可以设置两个属性startVal和endVal,它会自动判断计数或倒计时.支持vue-ssr.vue-cou ...