`
tuhaitao
  • 浏览: 378822 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

base64的js实现

阅读更多
写了一个js类,可以方便base64加密解密:

/**
*
*  Base64 encode / decode
*
*  @author haitao.tu
*  @date   2010-04-26
*  @email  tuhaitao@foxmail.com
*
*/
 
function Base64() {
 
	// private property
	_keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
 
	// public method for encoding
	this.encode = function (input) {
		var output = "";
		var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
		var i = 0;
		input = _utf8_encode(input);
		while (i < input.length) {
			chr1 = input.charCodeAt(i++);
			chr2 = input.charCodeAt(i++);
			chr3 = input.charCodeAt(i++);
			enc1 = chr1 >> 2;
			enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
			enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
			enc4 = chr3 & 63;
			if (isNaN(chr2)) {
				enc3 = enc4 = 64;
			} else if (isNaN(chr3)) {
				enc4 = 64;
			}
			output = output +
			_keyStr.charAt(enc1) + _keyStr.charAt(enc2) +
			_keyStr.charAt(enc3) + _keyStr.charAt(enc4);
		}
		return output;
	}
 
	// public method for decoding
	this.decode = function (input) {
		var output = "";
		var chr1, chr2, chr3;
		var enc1, enc2, enc3, enc4;
		var i = 0;
		input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
		while (i < input.length) {
			enc1 = _keyStr.indexOf(input.charAt(i++));
			enc2 = _keyStr.indexOf(input.charAt(i++));
			enc3 = _keyStr.indexOf(input.charAt(i++));
			enc4 = _keyStr.indexOf(input.charAt(i++));
			chr1 = (enc1 << 2) | (enc2 >> 4);
			chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
			chr3 = ((enc3 & 3) << 6) | enc4;
			output = output + String.fromCharCode(chr1);
			if (enc3 != 64) {
				output = output + String.fromCharCode(chr2);
			}
			if (enc4 != 64) {
				output = output + String.fromCharCode(chr3);
			}
		}
		output = _utf8_decode(output);
		return output;
	}
 
	// private method for UTF-8 encoding
	_utf8_encode = function (string) {
		string = string.replace(/\r\n/g,"\n");
		var utftext = "";
		for (var n = 0; n < string.length; n++) {
			var c = string.charCodeAt(n);
			if (c < 128) {
				utftext += String.fromCharCode(c);
			} else if((c > 127) && (c < 2048)) {
				utftext += String.fromCharCode((c >> 6) | 192);
				utftext += String.fromCharCode((c & 63) | 128);
			} else {
				utftext += String.fromCharCode((c >> 12) | 224);
				utftext += String.fromCharCode(((c >> 6) & 63) | 128);
				utftext += String.fromCharCode((c & 63) | 128);
			}
 
		}
		return utftext;
	}
 
	// private method for UTF-8 decoding
	_utf8_decode = function (utftext) {
		var string = "";
		var i = 0;
		var c = c1 = c2 = 0;
		while ( i < utftext.length ) {
			c = utftext.charCodeAt(i);
			if (c < 128) {
				string += String.fromCharCode(c);
				i++;
			} else if((c > 191) && (c < 224)) {
				c2 = utftext.charCodeAt(i+1);
				string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
				i += 2;
			} else {
				c2 = utftext.charCodeAt(i+1);
				c3 = utftext.charCodeAt(i+2);
				string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
				i += 3;
			}
		}
		return string;
	}
}



测试页面:
<html>
	<head>
		<script src="lib/base64.js" type="text/javascript"></script>
		<script type="text/javascript">
			var b = new Base64();
			var str = b.encode("admin:admin");
			alert("base64 encode:" + str);
			str = b.decode(str);
			alert("base64 decode:" + str);
		</script>
	</head>
	<body>
	</body>
</html>


:)
分享到:
评论
7 楼 lu674035 2014-08-07  
这个非常靠谱,非常感谢分享!
6 楼 dhy9836 2013-07-21  
楼主好人啊。
5 楼 qianzhiyong 2013-05-20  
这个靠谱!!!
4 楼 tuhaitao 2013-03-27  
babycluo 写道
谢谢分享~~十分有用哈~

3 楼 babycluo 2013-03-19  
谢谢分享~~十分有用哈~
2 楼 tuhaitao 2010-06-16  
eivenchan 写道
这个js函数的Base64编码跟apache 的Base64处理类编码出来的结果不一样啊,
怎样的做到结果一样?

你的html与js文件都要是utf-8的编码才可以的,是编码问题
1 楼 eivenchan 2010-06-12  
这个js函数的Base64编码跟apache 的Base64处理类编码出来的结果不一样啊,
怎样的做到结果一样?

相关推荐

    JS 版本的base64函数实现(base64encode,base64decode)

    用js实现的base64encode,base64decode函数. 包括: function base64encode(str) { function base64decode(str) { function utf16to8(str) { function utf8to16(str) { function doit() {

    Base64的JavaScript实现js-base64.zip

    base64.js 是 Base64 的 JavaScript 实现。浏览器:[removed][removed]node.jsvar Base64 = require('./base64.js').Base64;示例:Base64.encode('dankogai'); // ZGFua29nYWk= Base64.encode('小飼弾'); // ...

    js加载base64图片

    在JavaScript(JS)中加载Base64编码的图片是一种常见的技术,特别是在动态创建或处理图像时。Base64是一种用于将二进制数据转换为文本格式的方法,以便可以在HTML和JavaScript中安全地传递。以下是对这个主题的详细...

    jquery.base64.js_downcc.zip

    在JavaScript中,虽然原生API并不直接提供Base64的功能,但通过`btoa()`和`atob()`这两个方法,可以实现简单的Base64编码和解码。然而,这些方法并不完全跨浏览器,因此`jquery.base64.js`提供了一个统一的接口,...

    js实现base64加密

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

    base64js文件

    `base64js.js`文件很可能包含了这个库的实现代码。这个库的主要功能可能包括以下几点: 1. **编码二进制数据**: `base64js.encode`函数可以接受一个Uint8Array(JavaScript中的无符号8位整数数组)作为参数,将其...

    js-base64-3.7.5.tgz

    总结来说,"js-base64-3.7.5.tgz" 是一个JavaScript实现的Base64编码和解码库,它提供了一组高效、稳定的API,支持浏览器和Node.js环境,广泛应用于数据编码、网络通信和本地存储等场景。开发者可以根据项目需求选择...

    java和js相互base64编码解码

    在JavaScript中,虽然早期版本没有内置的Base64函数,但可以通过使用浏览器提供的`btoa()`和`atob()`方法或者第三方库(如`window.atob`和`window.btoa`在Node.js环境中不可用)来实现。在`base64InOut.js`文件中,...

    c# 用Base64实现文件上传

    下面就来演示一下,C#语言配合js,如何实现图片的base64格式上传与解析保存。  首先看一下前台是如何将文件读取到的,请先看如下js代码: var DataforUp = ; var reader = new FileReader(); //声明文件读取对象 ...

    jquery.base64.js及使用方法

    "jquery.base64.js"是一个JavaScript库,它为jQuery提供了一种方便的方式来实现Base64编码和解码,从而帮助开发者在URL中安全地传递这些数据。在本文中,我们将深入探讨Base64编码的概念,以及如何使用jQuery与这个...

    base64,java与JavaScript实现

    本文介绍了如何使用Java和JavaScript实现Base64编码与解码功能,特别是在Java Spring框架下的具体实现方式。通过这些代码示例,开发者可以快速地集成Base64的功能到自己的应用中,无论是前端还是后端。同时,还介绍...

    base64:js实现base64编码解码

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

    js的base64和base32加密函数

    在JavaScript编程中,Base64和Base32是两种常见的数据编码方式,它们主要用于在网络上传输二进制数据。在本文中,我们将深入探讨这两种编码方法以及如何在JavaScript中实现它们,同时解决在Ajax请求中传递包含特殊...

    JQ JS javascript 普通图片上传 图片格式转换 图片base64转换 jpg转base64 png转base64

    本文将深入探讨如何使用jQuery(JQ)、JavaScript(JS)以及base64编码技术来实现普通图片的上传、格式转换以及base64编码转换。我们将讨论jpg和png图片如何转化为base64字符串,以便在网络上传输或存储。 首先,让...

    javascript gbk 编码 的Base64.zip

    Base64编码的字符串可以通过`atob`函数(Node.js中需要使用Buffer对象)在JavaScript中解码为ASCII字符串,但这个过程不能直接处理GBK编码的字符。为了将Base64字符串还原为GBK编码的字符串,我们需要先解码为Uint8...

    javascript处理中文base64编码

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

    python将图片转base64,实现前端显示

    1. 图片转换为Base64编码:在Python中,可以通过内置的base64库轻松实现这个过程。首先,需要导入base64模块,然后使用open函数以二进制读取模式打开目标图片文件,之后使用base64.b64encode方法对图片内容进行编码...

    JavaScript实现Base64编码转换

    Base64是一种基于64个可打印字符来表示二进制数据的表示方法。由于2的6次方等于64,所以每6个比特为一个单元,对应某个可打印字符。三个字节有24个比特,对应于4个Base64单元,即3个字节需要用4个可打印字符来表示。...

    jquery.base64.js jquery-1.12.4.min.js

    例如,当需要在网页中动态加载和显示Base64编码的图片时,可以利用jQuery选择和操作DOM元素的能力,结合`jquery.base64.js` 的Base64处理函数,实现无缝集成。同时,由于jQuery对跨浏览器兼容性的良好支持,这些功能...

Global site tag (gtag.js) - Google Analytics