首先有个小Tips,1个字母字符 = 1个字节(byte) = 8位(bit),这是示意单米,Base64是 *** 上最常见的用于传输 8bit 的编码方式之一,Base64就是一种基于64个可打印字符来示意二进制数据的方式。
在一些 *** 传送渠道,有时候有些的字节字符不能被支持.好比图片的二进制流的每个字节不能能全部是可见字符,这种情况下传送不了.而Base64的机制就能很好解决这种问题,它不改变原来的协议,在原来的基础做一种扩展,基于64个可打印字符来示意二进制.
再者,有时候我们通过记事本去打开一些图片或者应用程序,会获得一大堆看不懂的乱码,由于二进制文件内里有许多无法显示和打印的字符.以是若是要让记事本能够处置二进制数据,就可以使用Base64来举行转码,将不能见的转成可见的.
那么有个问题来了,若是原始数据的位数不是3的整数倍怎么办,Base会在不足的后面用"="补足,以是这个"="只会存在在Base64码的最后,而且只会有1或者2个,不能能出现在中心.
// javaScript实现 if (!Shotgun) var Shotgun = {}; if (!Shotgun.Js) Shotgun.Js = {}; Shotgun.Js.Base64 = { _table: [ 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/' ], encode: function (bin) { var codes = []; var un = 0; un = bin.length % 3; if (un == 1) bin.push(0, 0); else if (un == 2) bin.push(0); for (var i = 2; i < bin.length; i += 3) { var c = bin[i - 2] << 16; c |= bin[i - 1] << 8; c |= bin[i]; codes.push(this._table[c >> 18 & 0x3f]); codes.push(this._table[c >> 12 & 0x3f]); codes.push(this._table[c >> 6 & 0x3f]); codes.push(this._table[c & 0x3f]); } if (un >= 1) { codes[codes.length - 1] = "="; bin.pop(); } if (un == 1) { codes[codes.length - 2] = "="; bin.pop(); } return codes.join(""); }, decode: function (base64Str) { var i = 0; var bin = []; var x = 0, code = 0, eq = 0; while (i < base64Str.length) { var c = base64Str.charAt(i++); var idx = this._table.indexOf(c); if (idx == -1) { switch (c) { case '=': idx = 0; eq++; break; case ' ': case '\n': case "\r": case '\t': continue; default: throw { "message": "\u0062\u0061\u0073\u0065\u0036\u0034\u002E\u0074\u0068\u0065\u002D\u0078\u002E\u0063\u006E\u0020\u0045\u0072\u0072\u006F\u0072\u003A\u65E0\u6548\u7F16\u7801\uFF1A" + c }; } } if (eq > 0 && idx != 0) throw { "message": "\u0062\u0061\u0073\u0065\u0036\u0034\u002E\u0074\u0068\u0065\u002D\u0078\u002E\u0063\u006E\u0020\u0045\u0072\u0072\u006F\u0072\u003A\u7F16\u7801\u683C\u5F0F\u9519\u8BEF\uFF01" }; code = code << 6 | idx; if (++x != 4) continue; bin.push(code >> 16); bin.push(code >> 8 & 0xff); bin.push(code & 0xff) code = x = 0; } if (code != 0) throw { "message": "\u0062\u0061\u0073\u0065\u0036\u0034\u002E\u0074\u0068\u0065\u002D\u0078\u002E\u0063\u006E\u0020\u0045\u0072\u0072\u006F\u0072\u003A\u7F16\u7801\u6570\u636E\u957F\u5EA6\u9519\u8BEF" }; if (eq == 1) bin.pop(); else if (eq == 2) { bin.pop(); bin.pop(); } else if (eq > 2) throw { "message": "\u0062\u0061\u0073\u0065\u0036\u0034\u002E\u0074\u0068\u0065\u002D\u0078\u002E\u0063\u006E\u0020\u0045\u0072\u0072\u006F\u0072\u003A\u7F16\u7801\u683C\u5F0F\u9519\u8BEF\uFF01" }; return bin; } };
crypto-js:功能强大,不止处置Base64,支持的模块异常多,star数现在6k+,前后端可用
//后端 npm包治理 npm install crypto-js import sha256 from 'crypto-js/sha256'; import hmacSHA512 from 'crypto-js/hmac-sha512'; import Base64 from 'crypto-js/enc-base64'; const message, nonce, path, privateKey; // ... const hashDigest = sha256(nonce + message); const hmacDigest = Base64.stringify(hmacSHA512(path + hashDigest, privateKey)); //前端 Brower治理 bower install crypto-js
js-Base64:专门处置Base64,现在star数2k+,前后端均可用
//安装 $ npm install --save js-base64 //若是你使用的es6语法,需要转载这个举行语法转换 $ npm install --save babel-preset-env //node.js var Base64 = require('js-base64').Base64; //es6+ import { Base64 } from 'js-base64'; //异常轻快的使用体验 Base64.encode('dankogai'); // ZGFua29nYWk= Base64.encode('小飼弾'); // 5bCP6aO85by+ Base64.encodeURI('小飼弾'); // 5bCP6aO85by
若是你看懂了以上的算法原理,那么解密实在不是太大的问题,只要你遵照这个规则举行逆推运算,就可以获得原始数据.以是严酷上说Base64并不是什么加密,只是编译事后的并不是明文而已
1.阿里云: 本站现在使用的是阿里云主机,平安/可靠/稳固。点击领取2000米代金券、领会最新阿里云产物的种种优惠流动点击进入
假如有些人提问 “今日的日常生活最离不了哪些?” 回答不难猜测 “手机上和互联网” 现如今,人们可以根据各种各样移动智能终端轻轻松松便捷地“联接在一起”,身后靠得是中国移动通信、联通、中国...
呵护你好运安康!享受阳光沐浴 是服务器是24小时全天工作的,看你的服务器大小和资源量来决定你的服务器维护时间只有这时候才会停止还有被黑客那个那个了,现在一般的网站服务器都是有代理。 当然不可能,运维人...
王媛瑜伽(空中瑜伽老师简介) 小练老师有话说:喜欢瑜伽的人,往往在感受到瑜伽带来的身体上的变化后,开始感知到心灵上的变化,不同于其他剧烈的运动,舒缓的瑜伽动作让人们在练习时,能更好地思考和冥想,从而...
清除照相机缓存文件:打开设置,点一下运用,程序管理,寻找照相机进到,储存,清除缓存文件或删掉数据信息就可以;重启手机或重置手机:长按手机上锁屏键,重启手机或打开设置,点一下系统软件和升级,重设,修复系...
调色原理(再也不怕后期调色啦) 调色是大家学习摄影后期时的一大难题。其根源并不在于我们不明白各种调色工具的使用,而是大家常常缺乏思路,不知道怎样搭配色彩才舒服、好看。 其实在色彩的搭配上,美术...
相信现在有很多的朋友们对于房屋面积有误想测绘多少钱好呢谁知道呢都想要了解吧,那么今天小编就来给大家针对房屋面积有误想测绘多少钱好呢谁知道呢进行一个介绍吧,希望小编介绍的内容能够为大家起到帮助哦...