分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 网页技术

js ?base64加密解密

发布时间:2023-09-06 01:38责任编辑:董明明关键词:jsbase64加密解密
var base64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var base64DecodeChars = new Array( ???-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, ???-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, ???-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63, ???52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1, ???-1, ?0, ?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, 10, 11, 12, 13, 14, ???15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1, ???-1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, ???41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1);function base64encode(str) { ???var out, i, len; ???var c1, c2, c3; ???len = str.length; ???i = 0; ???out = ""; ???while(i < len) { ???c1 = str.charCodeAt(i++) & 0xff; ???if(i == len) ???{ ???????out += base64EncodeChars.charAt(c1 >> 2); ???????out += base64EncodeChars.charAt((c1 & 0x3) << 4); ???????out += "=="; ???????break; ???} ???c2 = str.charCodeAt(i++); ???if(i == len) ???{ ???????out += base64EncodeChars.charAt(c1 >> 2); ???????out += base64EncodeChars.charAt(((c1 & 0x3)<< 4) | ((c2 & 0xF0) >> 4)); ???????out += base64EncodeChars.charAt((c2 & 0xF) << 2); ???????out += "="; ???????break; ???} ???c3 = str.charCodeAt(i++); ???out += base64EncodeChars.charAt(c1 >> 2); ???out += base64EncodeChars.charAt(((c1 & 0x3)<< 4) | ((c2 & 0xF0) >> 4)); ???out += base64EncodeChars.charAt(((c2 & 0xF) << 2) | ((c3 & 0xC0) >>6)); ???out += base64EncodeChars.charAt(c3 & 0x3F); ???} ???return out;}function base64decode(str) { ???var c1, c2, c3, c4; ???var i, len, out; ???len = str.length; ???i = 0; ???out = ""; ???while(i < len) { ???/* c1 */ ???do { ???????c1 = base64DecodeChars[str.charCodeAt(i++) & 0xff]; ???} while(i < len && c1 == -1); ???if(c1 == -1) ???????break; ???/* c2 */ ???do { ???????c2 = base64DecodeChars[str.charCodeAt(i++) & 0xff]; ???} while(i < len && c2 == -1); ???if(c2 == -1) ???????break; ???out += String.fromCharCode((c1 << 2) | ((c2 & 0x30) >> 4)); ???/* c3 */ ???do { ???????c3 = str.charCodeAt(i++) & 0xff; ???????if(c3 == 61) ???????return out; ???????c3 = base64DecodeChars[c3]; ???} while(i < len && c3 == -1); ???if(c3 == -1) ???????break; ???out += String.fromCharCode(((c2 & 0XF) << 4) | ((c3 & 0x3C) >> 2)); ???/* c4 */ ???do { ???????c4 = str.charCodeAt(i++) & 0xff; ???????if(c4 == 61) ???????return out; ???????c4 = base64DecodeChars[c4]; ???} while(i < len && c4 == -1); ???if(c4 == -1) ???????break; ???out += String.fromCharCode(((c3 & 0x03) << 6) | c4); ???} ???return out;}function utf16to8(str) { ???var out, i, len, c; ???out = ""; ???len = str.length; ???for(i = 0; i < len; i++) { ???c = str.charCodeAt(i); ???if ((c >= 0x0001) && (c <= 0x007F)) { ???????out += str.charAt(i); ???} else if (c > 0x07FF) { ???????out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F)); ???????out += String.fromCharCode(0x80 | ((c >> ?6) & 0x3F)); ???????out += String.fromCharCode(0x80 | ((c >> ?0) & 0x3F)); ???} else { ???????out += String.fromCharCode(0xC0 | ((c >> ?6) & 0x1F)); ???????out += String.fromCharCode(0x80 | ((c >> ?0) & 0x3F)); ???} ???} ???return out;}function utf8to16(str) { ???var out, i, len, c; ???var char2, char3; ???out = ""; ???len = str.length; ???i = 0; ???while(i < len) { ???c = str.charCodeAt(i++); ???switch(c >> 4) ???{ ??????case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: ???????// 0xxxxxxx ???????out += str.charAt(i-1); ???????break; ?????case 12: case 13: ???????// 110x xxxx ??10xx xxxx ???????char2 = str.charCodeAt(i++); ???????out += String.fromCharCode(((c & 0x1F) << 6) | (char2 & 0x3F)); ???????break; ?????case 14: ???????// 1110 xxxx ?10xx xxxx ?10xx xxxx ???????char2 = str.charCodeAt(i++); ???????char3 = str.charCodeAt(i++); ???????out += String.fromCharCode(((c & 0x0F) << 12) | ??????????????????????((char2 & 0x3F) << 6) | ??????????????????????((char3 & 0x3F) << 0)); ???????break; ???} ???} ???return out;}function CharToHex(str) { ???var out, i, len, c, h; ???out = ""; ???len = str.length; ???i = 0; ???while(i < len) ????{ ???????c = str.charCodeAt(i++); ???????h = c.toString(16); ???????if(h.length < 2) ???????????h = "0" + h; ???????????????out += "\\x" + h + " "; ???????if(i > 0 && i % 8 == 0) ???????????out += "\r\n"; ???} ???return out;}function doEncode() { ???var src = document.getElementById(‘src‘).value; ???document.getElementById(‘dest‘).value = base64encode(utf16to8(src)); ???//调用这里加密}function doDecode() { ???var src = document.getElementById(‘src‘).value; ???var opts = document.getElementById(‘opt‘); ???if(opts.checked) ???{ ???????document.getElementById(‘dest‘).value = CharToHex(base64decode(src)); ??//调用这里解密 ???} ???else ???{ ???????document.getElementById(‘dest‘).value = utf8to16(base64decode(src)); ???}}//window.BASE64 = __BASE64; ?function ss(){ ???return ‘1231‘;} 

js  base64加密解密

js ?base64加密解密

原文地址:https://www.cnblogs.com/wordblog/p/8325715.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved