`
blxu
  • 浏览: 5454 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

js实现base32编码

 
阅读更多

    在网上找了一圈,想找一个js实现base32编码的,网上只有实现base64编码的,其实原理都是一样的。都是将字符的ASCII码分组后再重新组 合,区别只是每组包含的有效的bytes不同,base64是将3个ASCII字节,组合成4个base字节。而base32是将5个ASCII字节组合 成8个base字节。
    下面是我根据java实现base32编码改编的。可以实现对中文的编码。

 

    核心的加密和解密函数如下,附件里是完整的代码,包括对中文的支持函数(对中文的编码是从网上引用的)。

 

/**
*加密函数
*返回被编码加密的字符串
*/

var getEncodeString =  function (srcString){
		//var srcString = 'abc';
		
		var          i        = 0;
		var          index    = 0;
		var          digit    = 0;
		var          currByte;
		var          nextByte;
		var retrunString = '';
		
		for (var i=0; i< srcString.length;) {
			//var          index    = 0;
			currByte = (srcString.charCodeAt(i) >= 0) ? srcString.charCodeAt(i)
									   : (srcString.charCodeAt(i) + 256); 

			if (index > 3) {
				if ((i + 1) < srcString.length) {
				       nextByte = (srcString.charCodeAt(i + 1) >= 0) 
                                                 ? srcString.charCodeAt(i + 1)
                                                  : (srcString.charCodeAt(i + 1) + 256);
				} else {
					nextByte = 0;
				}

				digit     = currByte & (0xFF >> index);
				index     = (index + 5) % 8;
				digit <<= index;
				digit |= (nextByte >> (8 - index));
				i++;
			} else {
				digit     = (currByte >> (8 - (index + 5))) & 0x1F;
				index     = (index + 5) % 8;

				if (index == 0) {
					i++;
				}
			}

			retrunString = retrunString + BASE32CHAR.charAt(digit);
		}
return retrunString.toLowerCase();
}
		
/**
*解密函数
*返回解密的字符串
*/
 var getDecodeString = function (encodeString){
		var    i;
		var    index;
		var    lookup;
		var    offset;
		var    digit;
		var encodeString = encodeString.toUpperCase();
		var stringLen = parseInt((encodeString.length * 5) / 8);
		var bytes = new Array(stringLen);
		for ( var a=0;a<stringLen;a++){
			bytes[a]=0;
		}

		for (i = 0, index = 0, offset = 0; i < encodeString.length; i++) {
			var charCode0 = '0'.charCodeAt(0);
			lookup = encodeString.charCodeAt(i) - charCode0;

			if ((lookup < 0) || (lookup >= BASE32LOOOKUP.length)) {
				continue;
			}

			digit = BASE32LOOOKUP[lookup];

			if (digit == 0xFF) {
				continue;
			}

			if (index <= 3) {
				index = (index + 5) % 8;

				if (index == 0) {
					bytes[offset] = bytes[offset] | digit;
					
					offset++;

					if (offset >= bytes.length) {
						break;
					}
				} else {
					bytes[offset] = bytes[offset] | (digit << (8 - index));
					
				}
			} else {
				index = (index + 5) % 8;
				bytes[offset] = bytes[offset] | (digit >>> index);
				
				offset++;

				if (offset >= bytes.length) {
					break;
				}

				bytes[offset] = bytes[offset] | (digit << (8 - index));
				if(bytes[offset]>=256){
				
					//var lp = parseInt(bytes[offset]/256);
				  
					bytes[offset] %= 256; 
				}
			}
		}

		//return bytes.join(',');
		var realkeyString = '';
		var decodeString = '';
		for ( var a=0;a<bytes.length;a++){
										
			var realkey  = String.fromCharCode(bytes[a]);  
			realkeyString += realkey;
			//decodeString += bytes[a];
			
		}
		return realkeyString;
		
} 
		
		
				
		var returnEncodeStr = getEncodeString(strUnicode2Ansi('你是我的宝贝'));
		
		
		var returnDecodeStr = strAnsi2Unicode(getDecodeString(returnEncodeStr));
			
		alert(returnDecodeStr);

})()
  • base32.rar (27.5 KB)
  • 描述: 完整的代码
  • 下载次数: 150
分享到:
评论

相关推荐

    java和js相互base64编码解码

    总之,Java和JavaScript中Base64编码和解码的实现原理相似,都是将二进制数据转换为可打印的ASCII字符。Java自Java 8开始内置了Base64支持,而JavaScript则依赖于`btoa()`和`atob()`函数,或者使用第三方库。在实际...

    base62.js, node.js的javascript Base62编码/解码器.zip

    base62.js, node.js的javascript Base62编码/解码器 Base62.js JavaScript Base62编码/解码器什么是Base62编码?Base62编码将数字转换为ASCII字符串( 0 -9,一个z 和一个z ),反之亦然,这通常会导致比较短的字符串...

    js的base64和base32加密函数

    对于Base32编码,JavaScript原生不提供内置函数,我们需要借助第三方库,例如`base32.js`或`crypto-js`。 以下是一个简单的示例,展示了如何在JavaScript中使用这些库进行加密和解密操作: ```javascript // 引入...

    js 显示base64编码的二进制流网页图片

    Base64编码通过把每3个字节的二进制数据转换为4个字符来实现编码过程,每个字符代表着6个比特的信息,因此编码后的字符串长度总是原数据长度的4/3。这种编码方式的一个明显好处是,可以将数据直接嵌入到网页中,尤其...

    JavaScript实现Base64编码转换

    简介 Base64是一种基于64个可打印字符来表示二进制数据的表示方法。由于2的6次方等于64,所以每6个...当然,你也可以将图片、文本和音视频转换成二进制序列,再然后转换为Base64编码。我们这里讨论的是如何将二进制转换

    JS 实现Base64编码与解码实例详解

    Js实现Base64编码与解码 Base64其实是一种简单的置换加密方式,但是BASE64的用处往往并不是为了防止信息泄露,而且为了方便传输,进过BASE64编码后的信息会比原始信息长,大概是4/3倍。 Base64是一种基于64个可打印...

    易语言汇编base64编码

    在易语言汇编中实现Base64编码,通常会涉及以下几个步骤: 1. **数据分割**:将输入的字节数组按照每3个字节一组进行分割,如果最后剩余不足3个字节,需要额外处理。 2. **十六进制转换**:对每3个字节进行转换,...

    js对图片base64编码字符串进行解码并输出图像示例

    在本示例中,我们讨论的是如何使用JavaScript对基于Base64编码的图片进行解码并显示在网页上。Base64是一种用于将二进制数据编码为ASCII字符串的编码方式,它在传输或存储非文本数据时非常有用,例如图片。 在HTML...

    C#实现Base64编码与解码

    .net C#实现Base64编码与解码

    hi-base32:JavaScript的简单Base32(RFC 4648)编码解码功能支持UTF-8编码

    JavaScript的简单Base32(RFC 4648)编码/解码功能支持UTF-8编码。 演示版 下载 安装 您也可以使用Bower安装hi-base32。 bower install hi-base32 对于node.js,可以使用以下命令进行安装: npm install hi-base...

    base64:js实现base64编码解码

    js实现base64编码解码 base64编码原理: base64可编码范围(ASCII字符范围内\u0000-\u00ff),所以每个字符必须8位,以3个字符为一组,转换为6bit的字节(3*8=4*6=24). 在每个6bit字节的高位添加0组成8bit的字节,然后将每8...

    base编码解码工具.zip

    Base编码家族包括Base16、Base32、Base64以及Base85等,每种编码都有其特定的应用场景和特点。 1. **Base16(十六进制编码)** Base16是将二进制数据转化为16进制表示,因为16进制有16个字符(0-9和A-F),所以每...

    javascript处理中文base64编码

    分析这个文件可以帮助我们更深入地理解在JavaScript中如何处理中文Base64编码的具体实现。 总结来说,处理JavaScript中的中文Base64编码,关键在于正确地转换中文字符串到UTF-8字节数组,再进行Base64编码和解码。...

    js实现base64加密

    `jquery.base64.js`是一个jQuery插件,它提供了`.base64_encode()`和`.base64_decode()`方法,用于在JavaScript中实现Base64编码和解码。以下是如何使用这个库的例子: ```javascript // 引入jquery.base64.js ...

    js base64编码格式图片另存为下载

    在JavaScript(JS)中,Base64是一种常用的编码方式,用于将二进制数据转换成ASCII字符串,便于在网络上传输。在前端开发中,我们有时会遇到需要将Base64编码的图片保存或下载到本地的情况。这个过程涉及到浏览器的...

    Base64编码和解码的应用(前后端程序)

    **前端实现Base64编码** 在JavaScript中,可以使用`btoa()`函数对文本进行Base64编码。对于图片,可以通过FileReader API读取图片文件,使用`readAsDataURL()`方法将文件读取为Data URL,其格式就是Base64编码的图片...

    base32编码解码

    function getEncodeString(srcString) {  var BASE32CHAR = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"; var i = 0;  var index = 0;

    base32-免费.rar

    在这个"base32-免费.rar"压缩包中,我们找到了一个名为"base32.js"的文件,这很可能是一个JavaScript实现的Base32编码和解码库。 Base32编码的原理是将原始的二进制数据分割成5位一组,然后用Base32字符集中的字符...

Global site tag (gtag.js) - Google Analytics