js base32支持动态编码表,动态创建解码表,支持加密解密!
来源:互联网 发布:淘宝联盟如何分享店铺 编辑:程序博客网 时间:2024/05/16 05:38
在网上找到的都不支持修改编码表,只能使用默认的编码表在使用的自由度和安全度是不够的!所以就特地弄了一个js base32支持动态编码表(当然也支持默认的编码表),动态创建解码表,支持加密解密,并且进行了扩展,解决编码字符类似产生相同的加密字符,以js的类实现!
//Base32加密,Created by Neko!function Base32(Keys) { if (!(this instanceof Base32)) { return new Base32(); } this.init(Keys); return this;}Base32.prototype = {alphabet:'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567',alias:{ o:0, i:1, l:1, s:5 },lookupDecode:{},output:'',bits:0,skip:0,byte:0,init:function(alphabet){if(alphabet!=undefined)this.alphabet=alphabet;this.lookupDecode=this.lookup();},lookup:function() {var table = {};// Invert 'alphabet'for (var i = 0; i < this.alphabet.length; i++) {table[this.alphabet[i]] = i;}// Splice in 'alias'for (var key in this.alias) {if (!this.alias.hasOwnProperty(key)) continue;table[key] = table['' + this.alias[key]];}return table;},readByte:function(byte) { // 读取字节 if (typeof byte == 'string')byte = byte.charCodeAt(0); if (this.skip < 0) { this.bits |= (byte >> (-this.skip)); } else { this.bits = (byte << this.skip) & 248; } if (this.skip > 3) { this.skip -= 8; return 1; } if (this.skip < 4) { this.output += this.alphabet[this.bits >> 3]; this.skip += 5; } return 0; }, finish:function(check) { var output = this.output + (this.skip < 0 ? this.alphabet[this.bits >> 3] : '') + (check ? '$' : '') this.output = ''; return output; }, getEncodeString:function(input) {input=this.enDeCodeString(input);this.skip=0,this.bits=0,this.output='';for (var i = 0; i < input.length; ) {i += this.readByte(input[i]);}var output ;output = this.finish();return output; },enDeCodeString:function(srcString){//加密解密,模拟随机var szRet=srcString[0];//获取第一个字符var nKey=srcString.charCodeAt(0);//得到第一个字符的数字if(nKey<(srcString.length-1)){nKey+=srcString.length;}for(var i=0;i<srcString.length;i++){if(i==0)continue;szRet+=String.fromCharCode(srcString.charCodeAt(i)^nKey);nKey--;}return szRet;}, readChar:function(char) {//读取字符 if (typeof char != 'string'){ if (typeof char == 'number') { char = String.fromCharCode(char); } } //char = char.toLowerCase() var val = this.lookupDecode[char]; if (typeof val == 'undefined') { return; } val <<= 3; // 移动到最高位 this.byte |= val >>> this.skip; this.skip += 5; if (this.skip >= 8) { this.output += String.fromCharCode(this.byte); this.skip -= 8; if (this.skip > 0) this.byte = (val << (5 - this.skip)) & 255; else this.byte = 0; } }, getDecodeData:function(input) {//返回原始的数据this.skip=0,this.byte=0,this.output='';for (var i = 0; i < input.length; i++) {this.readChar(input[i]);}var output ;output = this.finish();output=this.enDeCodeString(output);return output; },getDecodeString:function(input) {//返回字符串var outputTemp,output='';outputTemp = this.getDecodeData(input);for(var i=0;i<outputTemp.length;i++){var szTemp=outputTemp.charCodeAt(i).toString(16);if(szTemp.length<2){szTemp='0'+szTemp;}szTemp=szTemp.toUpperCase();output+=szTemp;}return output; }}
0 0
- js base32支持动态编码表,动态创建解码表,支持加密解密!
- JS前台base32加密,C#后台解码
- Base32 解码以及加密
- 模仿combbox的创建下拉列表js支持动态选项
- PHP 加密/解密函数 dencrypt(动态密文,带压缩功能,支持中文)
- WEBRTC 支持H264编解码
- WEBRTC 支持H264编解码
- 动态创建控件支持事件响应
- 加密算法-对称加密,支持解密;
- Js动态删除行(支持FireFox)
- FFmpeg支持的音频编解码格式
- 让WebRTC支持H264编解码
- 动态,静态 编译支持加密的wxSqlite3 1.9.2
- jdk动态代理支持
- nginx支持动态模块
- 支持中文加密解密的DES算法
- javascript 字符串加密解密,支持中文字符
- AES加密、解密(支持中文)
- 第四周 课后实践:项目一——三角形类的构造函数(2)
- 手机、平板多屏幕多分辨率适配
- GO 语言学习 包 探究
- 对字符串常量 的理解
- 第四周 项目一 三角形类的构造函数(1)
- js base32支持动态编码表,动态创建解码表,支持加密解密!
- EditText中输入内容监听----当第一位输入为0时提示
- Flash 调试助手 Moster Debugger
- Oracle数据库逻辑增量备份之exp/imp
- 自动化测试咨询方面的一些理解
- 编写高质量iOS和OS X代码的52个有效方法(笔记二)
- Android基础系列----------- 开源项目整理
- Vlc ReleaseMediaPlayer 异常捕获
- EventBus