1. base64 不算是加密算法,只能说是一种转码。使用64 个可见的字符来代替 ASCII码 中的256 个字符。

2. ASCII码占用一个字节,可以有0~255共256个取值。前128个为常用的字符如运算符,字母 ,数字等 键盘上可以显示的后 128个为 特殊字符是键盘上找不到的字符。

3. ascII 有256 个 值,需要8个2进制未来表示(2^8=256),因为 某些字符不可见,并且有些数据传输的场景不支持 某些可见支付,所以 人们就想到用64 个基本的字符来代替所有的 数据。base64 应运而生。

4. 从ASCII 256 个字符 中挑选 出64 个字符,来代替原来所有的256个字符,这是base64 的核心。 64 (2^6) ,不能独立的表示一个完整的字符,6和8 的公倍数是24,所有用4个base64 的字符表示 3个 ascII 字符。

从存储的角度来说一个字节 是8 位,即便 base64 只用了64 个,但是它在计算机里面存储依旧用了8个字节。也就是说普通数据转化成base64 数据量会变大。变大大约4/3(不是总是4/3,因为原文不是3的整数倍的时候base64 会在后面用=占位)。

5.所以base64 就是 A-Z a-z 0-9 外加 + / 组成 ,使用= 占位 所以 base64 共有65 个字符。

6. 什么是base64urlsafe 编码。应为 某些请求的限定,不是使用 + / 所以把 +换成-,/ 换成 _ 。

base64 base64urlsafe的更多相关文章

  1. URL安全的Base64编码

    Base64编码可用于在HTTP环境下传递较长的标识信息.在其他应用程序中,也常常需要把二进制数据编码为适合放在URL(包括隐藏表单域)中的形式.此时,采用Base64编码不仅比较简短,同时也具有不可 ...

  2. Base64编码

    Base64编码 写在前面 今天在做一个Android app时遇到了一个问题:Android端采用ASE对称加密的数据在JavaWeb(jre1.8.0_7)后台解密时,居然解密失败了!经过测试后发 ...

  3. Android数据加密之Base64编码算法

    前言: 前面学习总结了平时开发中遇见的各种数据加密方式,最终都会对加密后的二进制数据进行Base64编码,起到一种二次加密的效果,其实呢Base64从严格意义上来说的话不是一种加密算法,而是一种编码算 ...

  4. java单向加密算法小结(1)--Base64算法

    从这一篇起整理一下常见的加密算法以及在java中使用的demo,首先从最简单的开始. 简单了解 Base64严格来说并不是一种加密算法,而是一种编码/解码的实现方式. 我们都知道,数据在计算机网络之间 ...

  5. URI编码解码和base64

    概述 对于uri的编解码,在js中有3对函数,分别是escape/unescape,encodeURI/decodeURI,encodeURIComponent/decodeURIComponent. ...

  6. 通过HTML5的Drag and Drop生成拓扑图片Base64信息

    HTML5 原生的 Drag and Drop是很不错的功能,网上使用例子较多如 http://html5demos.com/drag ,但这些例子大部分没实际用途,本文将搞个有点使用价值的例子,通过 ...

  7. Base-64 字符数组或字符串的长度无效等问题解决方案

    项目特殊需要,调用ActiveX三维控件进行控件某一特殊部位的截图操作,这个截图保存由ActiveX控件控制保存到本地是没问题的,现在需要将这个截图上传到服务器,多人共享,就牵扯到需要读取本地文件…… ...

  8. android Base64 加密

    一 Base64加密 import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.OutputStre ...

  9. When I see you again(加密原理介绍,代码实现DES、AES、RSA、Base64、MD5)

    关于网络安全的数据加密部分,本来打算总结一篇博客搞定,没想到东西太多,这已是第三篇了,而且这篇写了多次,熬了多次夜,真是again and again.起个名字:数据加密三部曲,前两部链接如下: 整体 ...

随机推荐

  1. 高级数据类型--列表[list]

    List(列表) 是 Python 中使用 最频繁 的数据类型,在其他语言中通常叫做 数组,专门用于存储 一串 信息,列表用 [] 定义,数据 之间使用 , 分隔,列表的 索引 从 0 开始. nam ...

  2. 2019-03-08 RF 调试Zibee 数据

  3. C#清理所有正在使用的资源

    namespace QQFrm{    partial class Form1    {        /// <summary>        /// 必需的设计器变量.        ...

  4. Spring Boot 揭秘与实战 自己实现一个简单的自动配置模块

    文章目录 1. 实战的开端 – Maven搭建 2. 参数的配置 - 属性参数类 3. 真的很简单 - 简单的服务类 4. 自动配置的核心 - 自动配置类 5. spring.factories 不要 ...

  5. 【转载】 详解BN(Batch Normalization)算法

    原文地址: http://blog.csdn.net/hjimce/article/details/50866313 作者:hjimce ------------------------------- ...

  6. MarkDown常用语法表

    MarkDown常用语法表 本文提供全流程,中文翻译.Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) 1 Title - 标题 2 H ...

  7. CodeForces - 441D: Valera and Swaps(置换群)

    A permutation p of length n is a sequence of distinct integers p1, p2, ..., pn (1 ≤ pi ≤ n). A permu ...

  8. 网页筛选Automatic Input Enrichment - FLAIR

    http://www.cs.rochester.edu/~tetreaul/Presentations-and-Posters/0504.pdf 介绍了一个在线平台https://eflnotes.w ...

  9. HTML表格元素

      学习要点:     1.表格元素总汇     2.构建表格解析 一.表格元素总汇     表格的基本构成最少需要三个元素:<table>.<tr>.<td>,其 ...

  10. java transient 知识点学习

    今天看源码的时候看到这个关键字,完全没见过,不懂.好吧!学习一下. 我们都知道实现了Serilizable接口的类,便可以序列化,那么其中某些成员变量不想被序列化怎么办?就是利用transient这个 ...