Base64 加密、解密的实现
2018-02-01 15:08
337 查看
加密:
import java.io.UnsupportedEncodingException;import org.apache.commons.codec.binary.Base64;
public class Base64Decoder {
public Object convert(String val,int maxLen) {
String result = val;
try {
result = new String(Base64.decodeBase64(val), "UTF-8");
return truncateString(result, maxLen);
} catch (UnsupportedEncodingException e) {
return val;
}
}
private String truncateString(String value, int maxLength) {
int len = 0;
StringBuilder sb = new StringBuilder();
for (char ch : value.toCharArray()) {
if (ch >= '\uF900' && ch <= '\uFAD9') {
len += 3;
} else if (ch >= '\u4E00' && ch <= '\u9FFF') {
len += 3;
} else if (ch >= '\u3400' && ch <= '\u4DB5') {
len += 3;
} else if (ch >= '\uE000' && ch <= '\uF8FF') {
len += 3;
} else if (Character.isHighSurrogate(ch)) {
len += 6;
} else if (Character.isLowSurrogate(ch)) {
len += 0;
} else {
len++;
}
if (len > maxLength) {
break;
}
sb.append(ch);
}
return sb.toString();
}
public static void main(String[] args) {
Base64Decoder b = new Base64Decoder();
String val = "AAA=";
System.out.println(b.convert(val,1500));
}
}
解密:
import org.apache.commons.codec.binary.Base64;import org.apache.commons.lang.StringUtils;
public class Base64LowEndianDecoder {
public Object convert(String val,int maxLen) {
if(StringUtils.isBlank(val)){
return val;
}
try {
//首先将字符串解码成字节数组
byte[] b = Base64.decodeBase64(val);
String ret = "";
//每两个字节一组循环
if(b.length % 2 != 0){
if(val.length() > maxLen){
return val.substring(0, maxLen);
}
return val;
}
for(int i = 0; i < b.length; i=i+2){
String hex = changeByteToHex(b[i+1]) + changeByteToHex(b[i]);
int n = Integer.parseInt(hex,16);
ret += n;
if(i < b.length-2){
ret += ";";
}
}
return ret.subSequence(0, Math.min(ret.length(), maxLen));
} catch (Exception e) {
return val;
}
}
private String changeByteToHex(byte b){
String hex = Integer.toHexString(b & 0xFF);
if (hex.length() == 1) {
hex = '0' + hex;
}
return hex;
}
public static void main(String[] args) {
Base64LowEndianDecoder b = new Base64LowEndianDecoder();
String val = "QUE9PQ==";
System.out.println(b.convert(val,600));
}
}
相关文章推荐
- base64加密解密c++的简单实现
- Base64加密解密原理以及代码实现
- C#实现Base64处理的加密解密,编码解码示例
- jQuery实现base64前台加密解密功能详解
- Java实现Base64给文件加密、解密
- go语言/golang实现base64加密解密
- 利用java自带的base64实现加密、解密
- Javascript实现base64的加密解密
- C# 下base64加密解密实现
- JS实现的base64加密解密完整实例
- Base64加密解密原理以及代码实现
- Javascript实现base64的加密解密方法示例
- Base64编码解析以及加密、解密实现
- 加密解密算法java实现(1)—BASE64
- C# 下base64加密解密实现
- java代码实现对文件的base64加密解密
- JS实现base64加密解密
- C#实现Base64加密解密
- javaScript base64算法的实现 与 java中的base64 加密 解密