package me.xueyao.encryption;
import java.io.UnsupportedEncodingException;
/**
* BASE64加解密工具类
*
* @Author: zkx
* @date:2019年5月20日 下午5:05:30
*
*/
class Base64Utils {
private static char[] base64EncodeChars = new char[] { 'A', 'B', 'C', 'D',
'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q',
'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd',
'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q',
'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3',
'4', '5', '6', '7', '8', '9', '+', '/' };
private static byte[] base64DecodeChars = new byte[] { -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 62, -1, -1, -1, 63, 52, 53, 54, 55, 56, 57, 58, 59,
60, 61, -1, -1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1,
-1, -1, -1, -1, -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1,
-1, -1 };
/**
* BASE64 加密
* @param data
* @return
*/
protected static String encrypt(byte[] data) {
StringBuffer sb = new StringBuffer();
int len = data.length;
int i = 0;
int b1, b2, b3;
while (i < len) {
b1 = data[i++] & 0xff;
if (i == len) {
sb.append(base64EncodeChars[b1 >>> 2]);
sb.append(base64EncodeChars[(b1 & 0x3) << 4]);
sb.append("==");
break;
}
b2 = data[i++] & 0xff;
if (i == len) {
sb.append(base64EncodeChars[b1 >>> 2]);
sb.append(base64EncodeChars[((b1 & 0x03) << 4)
| ((b2 & 0xf0) >>> 4)]);
sb.append(base64EncodeChars[(b2 & 0x0f) << 2]);
sb.append("=");
break;
}
b3 = data[i++] & 0xff;
sb.append(base64EncodeChars[b1 >>> 2]);
sb.append(base64EncodeChars[((b1 & 0x03) << 4)
| ((b2 & 0xf0) >>> 4)]);
sb.append(base64EncodeChars[((b2 & 0x0f) << 2)
| ((b3 & 0xc0) >>> 6)]);
sb.append(base64EncodeChars[b3 & 0x3f]);
}
return sb.toString();
}
/**
* Base64 解密
* @param str
* @return
* @throws UnsupportedEncodingException
*/
protected static byte[] decrypt(String str) throws Exception{
StringBuffer sb = new StringBuffer();
byte[] data = str.getBytes("US-ASCII");
int len = data.length;
int i = 0;
int b1, b2, b3, b4;
while (i < len) {
do {
b1 = base64DecodeChars[data[i++]];
} while (i < len && b1 == -1);
if (b1 == -1) {
break;
}
do {
b2 = base64DecodeChars[data[i++]];
} while (i < len && b2 == -1);
if (b2 == -1) {
break;
}
sb.append((char) ((b1 << 2) | ((b2 & 0x30) >>> 4)));
do {
b3 = data[i++];
if (b3 == 61)
return sb.toString().getBytes("iso8859-1");
b3 = base64DecodeChars[b3];
} while (i < len && b3 == -1);
if (b3 == -1)
break;
sb.append((char) (((b2 & 0x0f) << 4) | ((b3 & 0x3c) >>> 2)));
do {
b4 = data[i++];
if (b4 == 61)
return sb.toString().getBytes("iso8859-1");
b4 = base64DecodeChars[b4];
} while (i < len && b4 == -1);
if (b4 == -1)
break;
sb.append((char) (((b3 & 0x03) << 6) | b4));
}
return sb.toString().getBytes("iso8859-1");
}
}
相关推荐
java常用工具类之DES和Base64加密解密类
主要介绍了java常用工具类之DES和Base64加密解密类,需要的朋友可以参考下
java Base64编码解码工具类
java Base64编码解码工具类。
解决UE5像素流三大痛点:鼠标锁定/双光标/自动播放(附app.js魔改指南)
本文针对UE5像素流服务在实际应用中常见的鼠标锁定、双光标和自动播放三大交互痛点,提供了深入的技术分析和解决方案。通过详细解析app.js源码,指导开发者如何修改控制方案、修复光标显示以及实现静音自动播放,旨在提升Pixel Streaming应用的用户体验与专业度。
JAVA常用工具类
java常用工具类
maxwell与steady state thermal 通过workbench耦合仿真
文章目录maxwellsteady state thermal maxwell 1加入maxwell并打开 2导入模型 3选择求解器类型:涡流求解器eddy current 4修改模型名字不能带_等特殊符号 5为模型赋材料 6设立3D边界,各边电流进出方向为0其余方向300 7设置激励条件,可设置电流大小,相位,方向 8设置集肤深度,选取中间铜导体的体然后设置,如何设置看帮助文档 9求解设置 迭代步数 收敛精度 交流电频率 10验证条件满足计算 11求解 发现无法求解,删除ai
Unity镜子效果的实现(无需镜子Shader)
Unity镜子效果制作教程 本文提供全流程,中文翻译。 Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 —— 高分辨率用户请根据需求调整网页缩放比例) Chinar —— 心分享、心创新!助力快速实现一个简单的镜面反射效果为新手节省宝贵的时间,避免采坑! Chinar 教程效果: 1 Cre...
Base64加密与解密使用(+拓展:盐值法)
1、什么是Base64 Base64是一种直接利用64位可打印字符来表示二进制数据的算法,是一种比较常见的加密算法。JDK1.8版本提供了java.util.Base64的工具类,使用Base64提供的2个内部类进行加解密操作。 数据加密:java.util.Base64.Encoder, 对象获取方法:public static Base64.Encoder getEncoder() 数据加密处理:public byte[] encoder (byte[] src)。 ......
再相逢【知识图谱】中文医学知识图谱CMeKG,中文产科医学知识图谱COKG | 附:图数据库Neo4j下载安装教学(遇到问题并解决) + Neo4j基本操作
本篇文章介绍知识图谱的相关知识。从便于理解的角度切入,给出知识图谱的形象化定义,并介绍了国内的中文医学知识图谱CMeKG,还以用户视角体验了中文产科医学知识图谱。目录二介绍了如何部署安装Neo4j数据库,并解决了部署过程中遇到的一些基础错误,随后介绍了Neo4j图数据库的基础操作。
Java实现DES+BASE64加解密
一、以前在程序中用到过DES+BASE64加解密,通过安全监测出来的问题: Abstract: 程序使用了弱加密算法,无法保证敏感数据的保密性。 Explanation: 陈旧的加密算法(如 DES)再也不能为敏感数据提供足够的保护了。 加密算法依赖于密钥大小,这是确保加密强度的 主要方法之一。 加密强度通常通过生成有效密钥所需的时间和计算能力来衡量。 计算能力的提高使得能够在合理的时 间内获...
当C#遇见声音魔法:从麦克风到文字的0.1秒奇幻漂流
为什么选300Hz?因为人声基频通常在85-255Hz,但清脆的“啊”可能到2kHz,所以300Hz是安全区!(参考知识库[1])
基于matlab的阈值分割的车牌定位识别系统
车牌自动识别模块是现代社会智能交通系统(ITS)的重要组成部分,是图像处理和模式识别技术研究的热点,具有非常广泛的应用。车牌识别主要包括以下三个主要步骤:车牌区域定位、车牌字符分割、车牌字符识别。本案例通过对采集的车牌图像进行灰度变换、边缘检测、腐蚀及平滑等过程进行车牌图像预处理,并由此得到一种基于车牌颜色纹理特征的车牌定位方法,最终实现了车牌区域定位。车牌字符分割是为了方便后续对车牌字符进行匹配,从而对车牌进行识别。
java base64编码和解码
Base64 编码会将字符串编码得到一个含有 A-Za-z0-9+/ 的字符串。base64 编码和解码网上有些地方称为 base64 加密和解密,这是不准确的。base64 是不能用来加密和解密的,它只是一种编码解码方式,不能用于加密和解密,如果你想加密和解密可以选择如 AES、RSA 等加密算法。
【面试系列】数据工程师高频面试题及详细解答
本文针对数据工程师岗位,提供了详尽的面试题库和解答,分为初级、中级和高级三个层次。初级面试题主要涉及基本的数据处理和ETL工具的使用,如SQL查询、数据清洗和基本的数据建模。中级面试题重点考察数据管道设计、数据库优化和大数据平台的应用。高级面试题则深入探讨高级数据处理技术、分布式系统架构和数据湖的实现。通过这些问题和解答,候选人可以全面了解数据工程师岗位所需的技能,帮助其更好地准备面试。常考知识点总结部分则系统归纳了数据工程师岗位的关键技能领域。
java rsautil_RSA+Base64加解密Java工具类RSAUtil
RSA+Base64加解密Java工具类RSAUtil(公钥和私钥请自行生成)import java.io.IOException;import java.security.KeyFactory;import java.security.KeyPair;import java.security.KeyPairGenerator;import java.security.PrivateKey;imp...
Sprd Android 13 备忘 OTA升级app没更新到目标版本,恢复出厂才生效修改这个值
【代码】Sprd Android 13 备忘 OTA升级app没更新到目标版本,恢复出厂才生效修改这个值。
Probability and Statistics - 4th edition
Probability and Statistics - 4th edition
java base64工具类_Base64加解密Java工具类Base64Util
Base64加解密Java工具类import java.io.InputStream;import sun.misc.BASE64Decoder;import sun.misc.BASE64Encoder;/*** Base64加密与解密** @author chenxy*/@SuppressWarnings("restriction")public final class Base64Util ...
汉书HE8,好用的汇编代码编写工具
汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大
java base64解码工具_Base64加解密Java工具类Base64Util
Base64加解密Java工具类import java.io.InputStream;import sun.misc.BASE64Decoder;import sun.misc.BASE64Encoder;/*** Base64加密与解密** @author chenxy*/@SuppressWarnings("restriction")public final class Base64Util ...
Camera2Demo
在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作
复分析 阿尔福斯(Ahlfors) 第三版答案 英文
答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案
Java工具类-BASE64加解密
1 引入apache commons-codec依赖 <dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> <version>1.10</version> </dependency> 2 使用Base64.encodeBase64加密 public static Stri
「Java工具类」Apache的DigestUtils加密工具类和Base64加解密类
以及springboot+springcloud+Mybatisplus+druid+mysql+redis+swagger+maven+docker等集成框架的技术分享;datax、kafka、flink等大数据处理框架的技术分享
Java使用base64加解密
import java.io.IOException; import java.lang.reflect.Method; import org.apache.commons.codec.binary.Base64; public class Base64Utils { // %%%%%%%%%%%%%%%%%%%% 方法一 %%%%%%%%%%%%%%%%%%%% /
java加解密支持库_优雅的java加解密工具类-支持RSA,AES,MD5,Base64,Hex,ROT
jencrypt优雅的java加解密工具类-支持RSA,AES,MD5,Base64,Hex,ROT一.RSA TestCasepublic class TestRSAAlgorithm {public static void main(String[] args) {testFull();}public static void testFull() {//TODO Hex testRSAAlgo...
java base64utils_Java Base64Utils
/*** * * Copyright 1994 JsonInternational* All rights reserved.* Created on 19941115* Created by Jason* * */package cn.ucaner.alpaca.framework.utils.encrypt;/*** @Package:cn.ucaner.common.uti...
base64utils java_Base64Utils 在Java后台的扩展
/*** Created by ruiyi on 2016/4/27.*/public class Base64Util {private static char[] base64EncodeChars = new char[]{'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', ...
Base64加解密
Base64加解密 import java.nio.charset.StandardCharsets; import java.util.Base64; /** * base64 加解密工具类 */ public final class Base64Util { /** * 禁止实例化 */ private Base64Util() { } /** * 编码 * * @param str str * @
java中Base64的加密工具封装
Base64加密作为最简单普遍的加密方式(其实只能称为编码方式),应用场景众多比如秘钥,安全证书,也应用在其他的加密方式中或与其他加密方式进行嵌套使用 可以通过引用sun.misc来使用,也可以自己手动封装工具类(不会受第三方改动的影响,我一般采用这个),目前测试,两种加解密结果都一样,具体如下; (1)直接引用(jdk版本1.8)及测试如下: package com.mobile...
611



被折叠的 条评论
为什么被折叠?



