BASE64编码什么是Base64编码?它是一种把二进制的数据用文本表示的编码算法.String base64Encoder(byte[] data)byte[]{0xe4,0xb8,0xad} -> "5Lit"0xe4,0xb8,0xad通过base64编码,表示出来的字符串,就是"5Lit"我们看一下如何使用Base进行编码,假如我们把中用UTF8表示的字节表示出来,他正好是三个字节,0xe4,0xb8,0xad,utf8bytes("中") = {0xe4,0xb8,0xad};我们紧接着把这是三个字节一共是24位,按照每6位分组,分成4个字节,这4个字节对应的16进制,正好是39,0b,22,2d,然后我们通过查表,就可以查到39对应的是5,0b对应的字母是大写L,22对应的字母是i,2d对应的字母是t,所以最终编码出来的字符串,是5Lit

Base64编码表是从索引0一直到索引63,0对应的编码是A,1对应的编码是B,依次类推

那么使用Base64编码的目的是什么呢?1. 它是一种使用文本表示二进制内容的方式2. 它适用于文本协议3. 但是他的效率会下降例如电子邮件协议,他就是一个文本协议,如果我们要在电子邮件中添加一个二进制的文件,我们就可以用base64编码,然后以文本的形式传送,他的缺点是传输的效率会降低,因为二进制经过base64编码,长度会增加三分之一,如果长度不是3的整数倍,那么我们就需要在末尾补充一个0x00字节,或者是两个0x00字节,编码后我们加上一个等号就补充了一个字节,加上两个等号就是补充了两个字节,这样写法的时候我们就可以去掉
package com.learn.securl;import java.util.Base64;/*** 我们看一下如何使用Base64编码* @author Leon.Sun**/
public class SecBase64Demo {public static void main(String[] args) throws Exception {String original = "Hello\u00ff编码测试";/*** 首先我们通过getBytes把一个字符串转换为一个字节数组* 然后我们通过Base64.getEncoder.encodeToString把一个字节数组表示为一个字符串表示的Base64* * 在JAVA中使用Base64编码的时候,* 我们还可以使用withoutPadding,* 这样我们就可以把末尾的等号去掉* SGVsbG/Dv+e8lueggea1i+ivlQ* 可以看到末尾的等号已经没有了* 实际上有没有等号对于解码来说是没有影响的* */// String b64 = Base64.getEncoder().encodeToString(original.getBytes("UTF-8"));// String b64 = Base64.getEncoder().withoutPadding().encodeToString(original.getBytes("UTF-8"));/*** 这样我们就可以实现Base64的URL编码,* SGVsbG_Dv-e8lueggea1i-ivlQ* 在java中base64的url编码* 它会把加号变成减号,把斜杠变成下划线* 这样我们在传递URL参数的时候,* 就不会引起冲突* */String b64 = Base64.getUrlEncoder().withoutPadding().encodeToString(original.getBytes("UTF-8"));/*** 我们打印一下base64编码* * SGVsbG/Dv+e8lueggea1i+ivlQ==* 第一行就是通过base64编码编码出的字符串* 最后两个等号就是我们添加的两个字节*/System.out.println(b64);/*** 如果我们要解码base64,* 我们用Base64.getDecoder().decode就可以还原出原始的byte数组,* 然后我们通过new String传入UTF-8,* 把这个byte数组还原成String*/// String ori = new String(Base64.getDecoder().decode(b64), "UTF-8");String ori = new String(Base64.getUrlDecoder().decode(b64), "UTF-8");System.out.println(ori);}
}
最后我们总结一下:1. Base64编码它是一种编码算法,不是一种加密算法2. Base64编码的目的是把任意二进制数据编码为文本,他的代价是长度增加了三分之一3. 还有一些类似于Base64的编码,例如Base32,Base48,Base58等

Base64编码 - Java加密与安全相关推荐

  1. ios开发Base64编码以及加密相关学习

    一:.Base64补充 ```objc 1.Base64简单说明 描述:Base64可以成为密码学的基石,非常重要. 特点:可以将任意的二进制数据进行Base64编码 结果:所有的数据都能被编码为并只 ...

  2. Vue项目:路由跳转时中文传参被URL编码,怎么解决?用js封装Base64编码解码加密解密

    1.在utils中封装js方法,代码如下: var Base64 = { ​// private property_keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZab ...

  3. Base64Util 用户名和密码Base64编码Java代码

    import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import ...

  4. URL编码 - Java加密与安全

    JAVA的URL编码我们先看看什么是编码?ASCII码就是一种编码,A的编码是16进制的0x41,字母B的编码是0x42,而中文的中是用Unicode编码,中就是0x4e2d,用UTF-8编码,需要3 ...

  5. JS常见加密 AES、DES、RSA、MD5、SHAI、HMAC、Base64(编码) - Python/JS实现

    主要加密算法前言 本文仅仅介绍了常见的一些JS加密,并记录了JS和Python的实现方式 常见的加密算法基本分为这几类: (1)base64编码伪加密 (2)线性散列算法(签名算法)MD5 (3)安全 ...

  6. 浅谈Base64编码规则

    Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,在了解Base64编码之前,先了解几个基本概念:位.字节. 位:"位(bit)"是计算机中最小的数据单位.每一位 ...

  7. java中base64编码加密和android中base64编码加密不一样?base64编码解析错误?

    在android的base64加密后得到: WwogIHsKICAgICJ0MSI6ICIwIiwKICAgICJ0MiI6ICIyNDM4NCIsCiAgICAidDMiOiAiIiwKICAgIC ...

  8. java sha256加密后base64编码

    java sha256加密后base64编码 /*** 获取签名** @param str 加密前的字符串* @return 加密后的字符串*/private String getSign(Strin ...

  9. android Java BASE64编码和解码一:基础

    今天在做Android项目的时候遇到一个问题,需求是向服务器上传一张图片,要求把图片转化成图片流放在 json字符串里传输. 类似这样的: {"name":"jike&q ...

最新文章

  1. 买房猛于虎《功夫熊猫无家可归》
  2. POJ 2186 popular cow 有向图的强联通问题 Tarjan算法
  3. 【图像处理】——图像质量评价指标信噪比(PSNR)和结构相似性(SSIM)(含原理和Python代码)
  4. sql server2008禁用远程连接
  5. 一次性清退125名硕博研究生!又一高校发公告
  6. django启动时同时使用Schedule启动其他程序
  7. Kotlin - 100%兼容java和android开发
  8. 05NumPy--5.1多维数组
  9. 华为鸿蒙系统适合机型,华为鸿蒙os2.0系统适用哪些机型
  10. 垂直跑马灯水平跑马灯
  11. WhereHows 数据发现和管理工具
  12. android车机升级carplay,现代增加支持DIY升级CarPlay,Android Auto的车型
  13. 两场直播丨易鲸捷分布式数据库的并发控制 、PostgreSQL日常工作分享
  14. ESET NOD32最新单机、企业中、英文版 + 个人专有ID(90天使用期)申请方法
  15. ue4导入abc文件问题
  16. php布尔运算,布尔逻辑运算符有哪些?
  17. 5V输入升压14.4V四串磷酸铁锂电池充电芯片板 ,12.8V-32号电路板
  18. 支持十亿级密态数据、低代码,蚂蚁集团发布隐语开放平台
  19. java web项目混淆
  20. Docker从入门到进阶之基础操作(3)—— 仓库(Repository)

热门文章

  1. mongodb指南(翻译)(一) - 翻译前言
  2. 11个笑话让你领悟人生
  3. 【JDK源码】java.io包常用类详解
  4. break、continue和return在程序中的作用
  5. 有关数据库表被锁定的问题
  6. git 使用攻略小记
  7. 《写给大家看的设计书:实例与创意(修订版)》—1你已经知道多少了?
  8. smarty模板引擎总结六配置网站title,keywords,description
  9. phpDocumentor
  10. 仿OpenStack开发云计算管理软件”--熟悉开发环境