我们为什么要用base

base64是网络上最常见的用于传输8bit字节代码的编码方式之一。有时我们需要把二进制数据编码为适合放在URL中的形式。这时采用base64编码具有不可读性,即所编码的数据不会被人直接看出。除此之外,还可以放在请求头,响应头进行传输。

最方便的转码解码window.atob() 与window.btoa()

Window.atob() 函数用来解码一个已经被base-64编码过的数据。

window.btoa():将ascii字符串或二进制数据转换成一个base64编码过的字符串

注:以上办法不适用于带中文解密,即window.btoa 与 window.atob 不支持中文

带中文的base64转码解码

首先定义一个对象

function BASE64() {  // private property  _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";  // public method for encoding  this.encode = function (input) {  var output = "";  var chr1, chr2, chr3, enc1, enc2, enc3, enc4;  var i = 0;  input = _utf8_encode(input);  while (i < input.length) {  chr1 = input.charCodeAt(i++);  chr2 = input.charCodeAt(i++);  chr3 = input.charCodeAt(i++);  enc1 = chr1 >> 2;  enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);  enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);  enc4 = chr3 & 63;  if (isNaN(chr2)) {  enc3 = enc4 = 64;  } else if (isNaN(chr3)) {  enc4 = 64;  }  output = output +  _keyStr.charAt(enc1) + _keyStr.charAt(enc2) +  _keyStr.charAt(enc3) + _keyStr.charAt(enc4);  }  return output;  }  // public method for decoding  this.decode = function (input) {  var output = "";  var chr1, chr2, chr3;  var enc1, enc2, enc3, enc4;  var i = 0;  input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");  while (i < input.length) {  enc1 = _keyStr.indexOf(input.charAt(i++));  enc2 = _keyStr.indexOf(input.charAt(i++));  enc3 = _keyStr.indexOf(input.charAt(i++));  enc4 = _keyStr.indexOf(input.charAt(i++));  chr1 = (enc1 << 2) | (enc2 >> 4);  chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);  chr3 = ((enc3 & 3) << 6) | enc4;  output = output + String.fromCharCode(chr1);  if (enc3 != 64) {  output = output + String.fromCharCode(chr2);  }  if (enc4 != 64) {  output = output + String.fromCharCode(chr3);  }  }  output = _utf8_decode(output);  return output;  }  // private method for UTF-8 encoding  _utf8_encode = function (string) {  string = string.replace(/\r\n/g,"\n");  var utftext = "";  for (var n = 0; n < string.length; n++) {  var c = string.charCodeAt(n);  if (c < 128) {  utftext += String.fromCharCode(c);  } else if((c > 127) && (c < 2048)) {  utftext += String.fromCharCode((c >> 6) | 192);  utftext += String.fromCharCode((c & 63) | 128);  } else {  utftext += String.fromCharCode((c >> 12) | 224);  utftext += String.fromCharCode(((c >> 6) & 63) | 128);  utftext += String.fromCharCode((c & 63) | 128);  }  }  return utftext;  }  // private method for UTF-8 decoding  _utf8_decode = function (utftext) {  var string = "";  var i = 0;  var c = c1 = c2 = 0;  while ( i < utftext.length ) {  c = utftext.charCodeAt(i);  if (c < 128) {  string += String.fromCharCode(c);  i++;  } else if((c > 191) && (c < 224)) {  c2 = utftext.charCodeAt(i+1);  string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));  i += 2;  } else {  c2 = utftext.charCodeAt(i+1);  c3 = utftext.charCodeAt(i+2);  string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));  i += 3;  }  }  return string;  }
}

使用的时候直接调用

var str='你好';
var enstr=BASE64.encode(str);
alert(enstr);
var destr=BASE64.decode(enstr);
alert(destr);

js前端base64转码解码相关推荐

  1. js实现 base64 转码解码

    什么是base64 Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法. 在前端开发中常用来做加密解密.替换icon减少网 ...

  2. js实现base64编码和解码

    文章目录 需求 什么是Base64 编码规则 如何解码 js实现基于base64的编码解码 window自带函数进行Base64编码解码 Base64编码的实际运用 图片base64编码 需求 应公司 ...

  3. 用 JS 进行 Base64 编码、解码

    从IE10+浏览器开始,所有浏览器就原生提供了 Base64 编码.解码方法,不仅可以用于浏览器环境,Service Worker 环境也可以使用. 方法名就是 atob 和 btoa ,具体语法如下 ...

  4. Python Base64转码解码

    Python Base64 提供了好几种方法例如: encode, decode, encodestring, decodestring, b64encode, b64decode, standard ...

  5. 【后端过程记录】用flask搭建服务器作后端接收数据 将base64字符串码解码为可读取文件 载入训练好的模型进行预测

    因为项目的原因了解到有一个python的flask框架,查了一下: 关于前端图片上传的canvas: 如下元素 <canvas id="canvas" width=" ...

  6. Js实现Base64编码、解码

    1.加密解密方法使用: //1.加密 var str = '124中文内容'; var base = new Base64(); var result = base.encode(str); //do ...

  7. js前端 base64图片下载保存

    如图,我想通过点击"保存按钮",将这张base64图片保存到本地. // 保存按钮点击事件方法 function saveImg(){var sampleImage = $(&qu ...

  8. java解码base64的png图片_使用PHP对图片进行base64编码和解码(png、jpg,声音、视频)...

    为什么要对图片base64编码 base64是网络上最常见的传输8Bit字节代码的编码方式之一.base64主要不是加密,它主要的用途是把一些二进制数转成普通字符用于网络传输.由于一些二进制字符在传输 ...

  9. Java、JS、OC、Flutter的Base64编码和解码

    题记 -- 执剑天涯,从你的点滴积累开始,所及之处,必精益求精,即是折腾每一天. ** 你可能需要 CSDN 网易云课堂教程 掘金 EDU学院教程 知乎 Flutter系列文章 本文章将描述在 Jav ...

最新文章

  1. jittor拟合sin函数
  2. (摘要)100个伟大的商业理念:理念34:企业社会责任
  3. ssh mysql转发_ssh转发代理:ssh-agent用法详解
  4. 在什么情况下,刘强东会丧失京东的控制权?
  5. eclipse/myeclipse中快捷键 Ctrl+shift+down/up 出现屏幕颠倒的解决方法
  6. 基于JAVA+SpringBoot+Mybatis+MYSQL的疾病报销管理系统
  7. Leetcode每日一题:222.count-complete-tree-nodes(完全二叉树的节点个数)
  8. WiFi(网络)调试Android手机
  9. JavaScript:时间戳(timestamp)与时间(Date)转换
  10. 微信小程序4-小程序的api
  11. virtuoso配合calibre进行电路后仿真
  12. 微信检测器 微信过滤工具
  13. vue的基础总结(vue的非脚手架总结)
  14. NPM安装依赖包,报错node-gyp rebuild...解决方法
  15. 计算机评语公式怎么输,excel公式写评语
  16. wps 符号操作(仅符号)
  17. 区块链共识机制 和 经典分布式共识机制
  18. 如何更新服务器系统教程,服务器操作系统如何更新
  19. C++程序设计语言学习笔记:名字空间
  20. CleanMyMac X是干嘛的?及最新版功能介绍

热门文章

  1. 关于阿里云服务器域名备案完整步骤
  2. 区块链开发之windows环境配置
  3. $Linux vi/vim编辑器常用命令与用法总结
  4. Map线程安全几种实现方法
  5. 嵌入式系统开发 (复习笔记)
  6. day11 反转字符串||反转字符串2
  7. Lists.newArrayList
  8. 服务器返回常见状态码及意义
  9. 冒泡算法的Java实现
  10. 微擎+微赞(微官网)100套精华模板完美完整版