博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Base64加密
阅读量:6821 次
发布时间:2019-06-26

本文共 2606 字,大约阅读时间需要 8 分钟。

import 
org.bouncycastle.util.encoders.Base64;//Bouncy Castle开源包
public 
class 
Base64Code {
        
public 
final 
static 
String 
ENCODING
= 
"UTF-8"
;
//以3个字节表示汉字
       
        
public 
static 
String encode(String data)
throws 
Exception{
               
//加密
               
byte
[] b=Base64.encode(data.getBytes( 
ENCODING
));
//返回编码格式为“UTF-8”的字节数组
               
return 
new 
String(b,
ENCODING
); 
//构造一个新的编码格式为“UTF-8"的字符串
       }
       
        
public 
static 
String decode(String data)
throws 
Exception{
               
//执行解码
               
byte
[] b=Base64.decode(data.getBytes( 
ENCODING
));
               
return 
new 
String(b,
ENCODING
);
       }
}
 
import 
static 
org.junit.Assert.*;//测试包
 
public 
class 
test{
       
        
public 
final 
static 
void 
main(String[] args) 
throws 
Exception{
              String inputStr= 
"Java加密与解密艺术" 
;
              System. 
out
.println(
"原文:\t" 
+inputStr);
               
//进行Base64编码
              String code=Base64Code. encode(inputStr);
              System. 
out
.println(
"编码后:\t" 
+code);
              
               
//Base64解码
              String outputStr=Base64Code. decode(code);
              System. 
out
.println(
"解码后:\t" 
+outputStr);
              
               
//验证Base64编码解码一致性
               assertEquals(inputStr,outputStr);
       }
       
        
/*
        * 原文:      Java加密与解密艺术
编码后:       SmF2YeWKoOWvhuS4juino+WvhuiJuuacrw==
解码后:       Java加密与解密艺术
        * */
}

Commons Codec开源包,加/解密
import 
org.apache.commons.codec.binary.Base64;
//apache开元包,commons Codec
public 
class 
Commons_Base64 {
        
public 
static 
final 
String 
Encoding
= 
"UTF-8"
;
       
       
        
public 
static 
String encode(String data)
throws 
Exception{
               
byte
[] b=Base64.encodeBase64(data.getBytes( 
Encoding
));
               
return 
new 
String(b,
Encoding
);
       }
       
        
//安全加密
        
public 
static 
String encodeSafe(String data)
throws 
Exception{
               
byte
[] b= Base64.encodeBase64(data.getBytes( 
Encoding
), 
true 
);
               
return 
new 
String(b,
Encoding
);
       }
       
        
public 
static 
String decode(String data) 
throws 
Exception{
               
byte
[] b=Base64.decodeBase64(data.getBytes( 
Encoding
));
               
return 
new 
String(b,
Encoding
);
       }
}
import 
static 
org.junit.Assert.*;
public 
class 
test{
        
public 
final 
static 
void 
main(String[] args) 
throws 
Exception{
              String inputStr= 
"Java加密与解密艺术" 
;
              System. 
out
.println(
"原文:\t" 
+inputStr);
              
               
//base64加密
              String  encode=Commons_Base64. encode(inputStr);
              System. 
out
.println(
"编码后:\t" 
+encode);
              
               
//base64安全加密
              String encodeSage=Commons_Base64. encodeSafe(inputStr);
              System. 
out
.println(
"安全加密后:\t" 
+encodeSage);
              
               
//base64解码
              String outputStrSafe=Commons_Base64. decode(encodeSage);
              String outputStr=Commons_Base64. decode(encode);
              System. 
out
.println(
"安全解码:\t" 
+outputStrSafe);
              System. 
out
.println(
"解码:\t" 
+outputStr);
              
               
//验证一致性
               assertEquals(inputStr,outputStr);
       }
        
/*
        * 原文:      Java加密与解密艺术
编码后:       SmF2YeWKoOWvhuS4juino+WvhuiJuuacrw==
安全加密后:   SmF2YeWKoOWvhuS4juino+WvhuiJuuacrw==
安全解码:     Java加密与解密艺术
解码:  Java加密与解密艺术
        *
        * */
}
关于“安全加密”的区别:调试如下:
安全加密的字符串后有"\r\n",换行符。
从输出结果中也可以发现多了一个换行。

转载于:https://www.cnblogs.com/littlefishxu/p/3969183.html

你可能感兴趣的文章