Base64编码和AES加密

本文介绍了Base64编码的基本概念和在Java及Android中的实现,包括URL Safe的Base64编码,以及Android中Base64编码与Java的差异。同时,文章讨论了AES加密标准及其在加密解密中的应用,并提到了时间戳和随机字符串的生成。在Android中使用OkHttp时,需注意Base64编码的换行问题。最后,文章列举了关于Base64和AES的一些常见问题。
摘要由CSDN通过智能技术生成

转载请注明链接:https://blog.csdn.net/feather_wch/article/details/82594685

Base64编码和AES加密

版本:2018/9/18-1(20:18)



Base64

1、Base64是什么?

  1. 一种编码方式
  2. 由于某些系统中只能使用ASCII字符。
  3. 可以把二进制数据编码为可见的字符数据。

2、Base64末尾采用=结束

  1. 解析Base64编码时,遇到=就知道字符结束了

3、Base64每76个字符增加一个换行符

4、标准的Base64包含64个字符

  1. A-Z
  2. a-z
  3. 0-9
  4. /
  5. =

5、Url Safe的Base64编码

  1. +替换为-
  2. /替换为_

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的差异

  1. Android的Base64编码是默认换行
  2. 进行服务器验证的时候,会出现验证失败的情况,这是由于服务器那边的解码不支持换行符模式,所以编码时需要增加flag标志.

11、Android的Base64具有哪些flag?

  1. DEFAULT : 默认模式
  2. NO_PADDING :过滤结束符=
  3. NO_WRAP : 过滤换行符,和CRLF互斥。
  4. CRLF : 采用CRLF而不是LF作为换行符,也就是采用Window中的换行符,而不是unix中的换行符。
  5. URL_SAFE: 将+,/换成-,_
  6. 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模式

  1. 传输的参数使用android
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猎羽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值