1. function Base64() {
  2.  
  3. // private property
  4. _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
  5.  
  6. // public method for encoding
  7. this.encode = function (input) {
  8. var output = "";
  9. var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
  10. var i = 0;
  11. input = _utf8_encode(input);
  12. while (i < input.length) {
  13. chr1 = input.charCodeAt(i++);
  14. chr2 = input.charCodeAt(i++);
  15. chr3 = input.charCodeAt(i++);
  16. enc1 = chr1 >> 2;
  17. enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
  18. enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
  19. enc4 = chr3 & 63;
  20. if (isNaN(chr2)) {
  21. enc3 = enc4 = 64;
  22. } else if (isNaN(chr3)) {
  23. enc4 = 64;
  24. }
  25. output = output +
  26. _keyStr.charAt(enc1) + _keyStr.charAt(enc2) +
  27. _keyStr.charAt(enc3) + _keyStr.charAt(enc4);
  28. }
  29. return output;
  30. }
  31.  
  32. // public method for decoding
  33. this.decode = function (input) {
  34. var output = "";
  35. var chr1, chr2, chr3;
  36. var enc1, enc2, enc3, enc4;
  37. var i = 0;
  38. input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
  39. while (i < input.length) {
  40. enc1 = _keyStr.indexOf(input.charAt(i++));
  41. enc2 = _keyStr.indexOf(input.charAt(i++));
  42. enc3 = _keyStr.indexOf(input.charAt(i++));
  43. enc4 = _keyStr.indexOf(input.charAt(i++));
  44. chr1 = (enc1 << 2) | (enc2 >> 4);
  45. chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
  46. chr3 = ((enc3 & 3) << 6) | enc4;
  47. output = output + String.fromCharCode(chr1);
  48. if (enc3 != 64) {
  49. output = output + String.fromCharCode(chr2);
  50. }
  51. if (enc4 != 64) {
  52. output = output + String.fromCharCode(chr3);
  53. }
  54. }
  55. output = _utf8_decode(output);
  56. return output;
  57. }
  58.  
  59. // private method for UTF-8 encoding
  60. _utf8_encode = function (string) {
  61. string = string.replace(/\r\n/g,"\n");
  62. var utftext = "";
  63. for (var n = 0; n < string.length; n++) {
  64. var c = string.charCodeAt(n);
  65. if (c < 128) {
  66. utftext += String.fromCharCode(c);
  67. } else if((c > 127) && (c < 2048)) {
  68. utftext += String.fromCharCode((c >> 6) | 192);
  69. utftext += String.fromCharCode((c & 63) | 128);
  70. } else {
  71. utftext += String.fromCharCode((c >> 12) | 224);
  72. utftext += String.fromCharCode(((c >> 6) & 63) | 128);
  73. utftext += String.fromCharCode((c & 63) | 128);
  74. }
  75.  
  76. }
  77. return utftext;
  78. }
  79.  
  80. // private method for UTF-8 decoding
  81. _utf8_decode = function (utftext) {
  82. var string = "";
  83. var i = 0;
  84. var c = c1 = c2 = 0;
  85. while ( i < utftext.length ) {
  86. c = utftext.charCodeAt(i);
  87. if (c < 128) {
  88. string += String.fromCharCode(c);
  89. i++;
  90. } else if((c > 191) && (c < 224)) {
  91. c2 = utftext.charCodeAt(i+1);
  92. string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
  93. i += 2;
  94. } else {
  95. c2 = utftext.charCodeAt(i+1);
  96. c3 = utftext.charCodeAt(i+2);
  97. string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
  98. i += 3;
  99. }
  100. }
  101. return string;
  102. }
  103. }

Base64编码解码JS的更多相关文章

  1. Base64编码解码(js)

    开源的base64.js,使用很简单,浏览器引入该JS文件,然后Base64编码这样: Base64.encode('china is so nb'); // 编码 "Y2hpbmEgaXM ...

  2. 原来浏览器原生支持JS Base64编码解码 outside of the Latin1 range

    原来浏览器原生支持JS Base64编码解码 « 张鑫旭-鑫空间-鑫生活 https://www.zhangxinxu.com/wordpress/2018/08/js-base64-atob-bto ...

  3. 王小胖之 Base64编码/解码

    使用场景:编码网址作为URL参数,简单编码或加密数据,下载地址生成或解析. 实现功能:BASE64在线编码和解码. 数据实例:王小胖好啊,王小胖顶呱呱!! ~~ english 123 !@#$%^& ...

  4. OpenSSL 使用 base64 编码/解码

    简述 关于 OpenSSL 的介绍及安装请参见:Windows下编译OpenSSL 下面主要介绍有关 OpenSSL 使用 base64 编码/解码. 简述 编码解码 更多参考 编码/解码 #incl ...

  5. 利用openssl进行BASE64编码解码、md5/sha1摘要、AES/DES3加密解密

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...

  6. Javascript中Base64编码解码的使用实例

    Javascript为我们提供了一个简单的方法来实现字符串的Base64编码和解码,分别是window.btoa()函数和window.atob()函数. 1 var encodedStr = win ...

  7. Atitit. 二进制数据ascii表示法,与base64编码解码api 设计标准化总结java php c#.net

    Atitit. 二进制数据ascii表示法,与base64编码解码api 设计标准化总结java php c#.net 1. Base64编码, 1 1.1. 子模式 urlsafe Or  url  ...

  8. Atitit. 二进制数据ascii表示法,与base64编码解码api 设计标准化总结java php c#.net

    Atitit. 二进制数据ascii表示法,与base64编码解码api 设计标准化总结java php c#.net 1. Base64编码,1 1.1. 子模式 urlsafe Or  url u ...

  9. delphi Base64编码/解码及数据压缩/解压知识

    一.Base64编码/解码 一般用到的是Delphi自带的单元EncdDecd,当然还有第三方提供的单元或控件,其中我所接触到的认为比较好的有Indy的TIdMimeEncode / TIdMimeD ...

随机推荐

  1. Delegate & Event

    Long time without coding,貌似对programming都失去了曾有的一点点sense了,今日有空再细瞄一下.net的委托和事件. Delegate 首先,委托用于引用一类具有相 ...

  2. Qt的子窗口和父窗口阻塞问题

    在图形界面中,软件设计者通常需要将活跃窗口限制为一个.在某个窗口活跃时,它的父窗口被它挡住或者挡住一部分,这时候用鼠标去点击父窗口是没有作用的.问题的关键在于将子窗口设置模态: void MainWi ...

  3. 电脑小知识-win10

    设置开机自启 一直想设置几个软件开机自启,尤其是文件搜索类和截图软件,不然每次打开电脑都要双击好几个工具,下面就记录一下如何设置开机自启. 1.先打开咱们的任务管理器,看看都有什么是开机自启的: 可以 ...

  4. github项目

    一.github项目地址: https://github.com/fairy1231/gitLearning/tree/master 二.github的重要性: Git 是一个快速.可扩展的分布式版本 ...

  5. Python第八课学习

    Python第八课学习 www.cnblogs.com/resn/p/5800922.html 1 Ubuntu学习 根 / /: 所有目录都在 /boot : boot配置文件,内核和其他 linu ...

  6. 如何删除新添加的项目Module

    今天 new 了一个Module ,使用的是library,发现不是我想要的,于是果断删除它 但是如何删除呢,却一直找不到这个删除的delete 后来发现在这里可以删除 打开 file  -> ...

  7. Ubuntu系统下Anaconda使用方法总结

    前言:个人认为Anaconda比pip使用起来要方便很多,因为它创建虚拟环境和下载各种库都很方便.但是有时候conda的安装方法中没有某些库,必须使用pip来进行安装.所以,主要用Anaconda,偶 ...

  8. leetcode 222.Count Complete Tree Nodes

    完全二叉树是从左边开始一点点填充节点的,因此需要计算所有的节点的个数. 则分别从左边和右边来进行传递的,当左右是完全二叉树的时候,其节点个数就是pow(2,h)-1. /** * Definition ...

  9. HDU - 5833: Zhu and 772002 (高斯消元-自由元)

    pro:给定N个数Xi(Xi<1e18),保证每个数的素因子小于2e3:问有多少种方案,选处一些数,使得数的乘积是完全平方数.求答案%1e9+7: N<300; sol:小于2e3的素数只 ...

  10. html基础js

    HTML中的三把利器的JS 又称为JavaScript,看着好像和Java有点联系,实际上他和java半毛钱关系都没有,JavaScript和我们学习的Python.Go.Java.C++等,都是一种 ...