转载请注明链接:https://blog.csdn.net/feather_wch/article/details/82594685
Base64编码和AES加密
版本:2018/9/18-1(20:18)
Base64
1、Base64是什么?
- 一种编码方式
- 由于某些系统中只能使用ASCII字符。
- 可以把二进制数据编码为可见的字符数据。
2、Base64末尾采用=结束
- 解析Base64编码时,遇到
=
就知道字符结束了
3、Base64每76个字符增加一个换行符
4、标准的Base64包含64个字符
- A-Z
- a-z
- 0-9
- /
- =
5、Url Safe的Base64编码
- 将
+
替换为-
- 将
/
替换为_
Java实现
6、Java中的base64
java.util.Base64;
7、Java标准版本的base64和Url安全版本的base64
1-标准Base64
// java 标准Base64编码
String encodeResult = Base64.getEncoder().encodeToString(bytes);
byte[] decodeResult = Base64.getDecoder().decode(encodeResult);
2-url安全的Base64
// java url安全的Base64编码
String urlSafeEncodeResult = Base64.getUrlEncoder().encodeToString(bytes);
byte[] urlSafeDecodeResult = Base64.getUrlDecoder().decode(urlSafeEncodeResult);
Android实现
8、Android中的base64
android.util.Base64;
9、 Android中String的编码和解码
// 编码成String
String encodeResult = Base64.encodeToString(bytes, DEFAULT | NO_PADDING | NO_WRAP | CRLF | URL_SAFE | NO_CLOSE);
// 解码
byte[] decodeResult = Base64.decode(encodeResult, DEFAULT | NO_PADDING | NO_WRAP | CRLF | URL_SAFE | NO_CLOSE);
10、Android中Base64和java的差异
- Android的Base64编码是默认换行
- 进行服务器验证的时候,会出现验证失败的情况,这是由于服务器那边的解码不支持换行符模式,所以编码时需要增加flag标志.
11、Android的Base64具有哪些flag?
- DEFAULT : 默认模式
- NO_PADDING :过滤结束符=
- NO_WRAP : 过滤换行符,和CRLF互斥。
- CRLF : 采用CRLF而不是LF作为换行符,也就是采用Window中的换行符,而不是unix中的换行符。
- URL_SAFE: 将+,/换成-,_
- NO_CLOSE
文件
12、文件进行编码
File file = new File("/storage/emulated/0/pimsecure_debug.txt");
FileInputStream inputFile = new FileInputStream(file);
byte[] buffer = new byte[(int) file.length()];
// 1、从文件写入到byte数组中
inputFile.read(buffer);
inputFile.close();
// 2、对byte数组进行编码
encodedString = Base64.encodeToString(buffer, Base64.DEFAULT);
13、文件进行解码
File desFile = new File("/storage/emulated/0/pimsecure_debug_1.txt");
FileOutputStream fos = new FileOutputStream(desFile);
byte[] decodeBytes = Base64.decode(encodedString.getBytes(), Base64.DEFAULT);
// 将解码而成的byte数组中的数据,写入到文件中。
fos.write(decodeBytes);
fos.close();
OkHttp
14、OkHttp中要使用NO_WRAP | URL_SAFE
模式
- 传输的参数使用android