首页 > 其他分享 >js中的base64转化

js中的base64转化

时间:2022-11-21 10:24:57浏览次数:47  
标签:keyStr String base64 js 转化 63 ._ var fromCharCode

创建一个base64.js文件,将以下代码粘贴进去

var Base64=
{
    _keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
    encode:function(e){
        var t="";
        var n,r,i,s,o,u,a;
        var f=0;
        e=Base64._utf8_encode(e);
        while(f<e.length){
            n=e.charCodeAt(f++);
            r=e.charCodeAt(f++);
            i=e.charCodeAt(f++);
            s=n>>2;
            o=(n&3)<<4|r>>4;
            u=(r&15)<<2|i>>6;
            a=i&63;
            if(isNaN(r)){
                u=a=64
            }else if(isNaN(i)){
                a=64
            }
            t=t+this._keyStr.charAt(s)+this._keyStr.charAt(o)+this._keyStr.charAt(u)+this._keyStr.charAt(a)
        }
        return t
    },
    decode:function(e){
        var t="";
        var n,r,i;
        var s,o,u,a;
        var f=0;
        e=e.replace(/[^A-Za-z0-9+/=]/g,"");
        while(f<e.length){
            s=this._keyStr.indexOf(e.charAt(f++));
            o=this._keyStr.indexOf(e.charAt(f++));
            u=this._keyStr.indexOf(e.charAt(f++));
            a=this._keyStr.indexOf(e.charAt(f++));
            n=s<<2|o>>4;
            r=(o&15)<<4|u>>2;
            i=(u&3)<<6|a;
            t=t+String.fromCharCode(n);
            if(u!=64){
                t=t+String.fromCharCode(r)
            }
            if(a!=64){
                t=t+String.fromCharCode(i)
            }
        }
        t=Base64._utf8_decode(t);
        return t
    },
    _utf8_encode:function(e){
        e=e.replace(/rn/g,"n");
        var t="";
        for(var n=0;n<e.length;n++){
            var r=e.charCodeAt(n);
            if(r<128){
                t+=String.fromCharCode(r)
            }else if(r>127&&r<2048){
                t+=String.fromCharCode(r>>6|192);
                t+=String.fromCharCode(r&63|128)
            }else{
                t+=String.fromCharCode(r>>12|224);
                t+=String.fromCharCode(r>>6&63|128);
                t+=String.fromCharCode(r&63|128)
            }
        }
        return t
    },
    _utf8_decode:function(e){
        var t="";
        var n=0;
        var r=c1=c2=0;
        while(n<e.length){
            r=e.charCodeAt(n);
            if(r<128){
                t+=String.fromCharCode(r);
                n++
            }else if(r>191&&r<224){
                c2=e.charCodeAt(n+1);
                t+=String.fromCharCode((r&31)<<6|c2&63);
                n+=2
            }else{
                c2=e.charCodeAt(n+1);
                c3=e.charCodeAt(n+2);
                t+=String.fromCharCode((r&15)<<12|(c2&63)<<6|c3&63);
                n+=3
            }
        }
        return t
    }
};

 

标签:keyStr,String,base64,js,转化,63,._,var,fromCharCode
From: https://www.cnblogs.com/lccsdncnblogs/p/16910513.html

相关文章

  • c#/JS RSA 非对称加密
    可以用到前端加密,后端解密,或者后端加解密首先要知道这这个rsa是需要一个公钥一个私钥进行加解密的,公钥加密,私钥解密。可以去百度在线生成。脚本或者页面中先引用jsencry......
  • 一个jsqlparse+git做的小工具帮我节省时间摸鱼
    背景前些时间做了个小工具解决了团队内数据库脚本检验&多测试环境自动执行的问题,感觉挺有意思,在这跟大家分享一下。工具诞生之前的流程是这样:1.开发人员先在开发环境编......
  • nodejs版本管理工具nvm
    linux版本安装curl-o-https://gitee.com/Annlix/nvm-sh_nvm/raw/master/install.sh|bash查看nodejs版本nvmls-remote安装指定版本nvminstallv16.18.1......
  • jsencypt (RSA加密工具)
    配置npminstalljsencrypt--dev建立jsencrypt.js文件importJSEncryptfrom'jsencrypt/bin/jsencrypt.min'//密钥对生成http://web.chacuo.net/netrsakeypair;......
  • LocalDate,LocalTime,LocalDateTime之间的转化和常用应用
    Java8中,对于日期、时间、时间日期有不同的对象来表示,分别就是LocalDate、LocalTime、LocalDateTime他们都位于java.time包下,并且他们都仅单纯的表示一个不可变的时间对象,......
  • 怎样写一个解释器js版本
    树遍历算法:vartreeSum=(list)=>{if(typeoflist==='number'){returnlist;}else{varcar=list.shift();varcdr=......
  • HTML、CSS、JS实现的HTML、CSS、JS编辑器
    Atom通用代码编辑器,Github出品,基于electron​桌面应用平台,https://atom.io/,源代码:https://github.com/atom/atomVisualStudioCode通用代码编辑器,微软出品,基于electron​......
  • JSP以及MVC模式和三层架构
    jsp:javaserverpages,java服务端页面。它是一种,动态网页技术,其中可以定义html等静态内容,也可以定义java代码等动态内容,可以避免在servlet中用write()直接输出html,但是本质......
  • JS循环
    js循环内容回顾程序的执行结构分支结构:if,switch本章内容while,do...while循环for循环break,continue关键字第一节while循环和do...while循环1.while循环......
  • JS比较数值大小
    一、简单循环算法代码如下:constnumbers=[5,6,2,3,7];letmax=-Infinity;for(leti=0;i<numbers.length;i++){if(numbers[i]>max)max......