`

JS实现base64加密解密

阅读更多

 

<HTML>
<HEAD>
<TITLE>Base64</TITLE>
<script language=javascript>
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 doit() {
  var f = document.f
  f.output.value = base64encode(utf16to8(f.source.value))
  f.decode.value = utf8to16(base64decode(f.output.value))
}
</script>
</HEAD>
<BODY>
<H1>Base64</H1>
<FORM NAME="f">
原码<BR>
<TEXTAREA NAME="source" ROWS=4 COLS=60 WRAP="soft"></TEXTAREA><BR><BR>
Base64 encode<BR>
<TEXTAREA NAME="output" ROWS=4 COLS=60 WRAP="soft"></TEXTAREA><BR><BR>
Base64 decode<BR>
<TEXTAREA NAME="decode" ROWS=4 COLS=60 WRAP="soft"></TEXTAREA><BR><BR>
<INPUT TYPE=BUTTON VALUE="转换" ONCLICK="doit()">
</FORM>
</BODY>

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/fengzheng0306/archive/2006/04/25/676055.aspx

分享到:
评论

相关推荐

    js的base64加密解密

    在这个场景中,我们讨论的是一个纯JavaScript实现的Base64加密解密工具类,它无需依赖其他外部JavaScript库,因此非常适合在各种环境中使用,特别是对于那些对文件大小和加载速度有严格要求的项目。 Base64加密,也...

    微信小程序 AES ECB base64 加密解密

    在微信小程序中实现AES ECB Base64加密解密,你需要以下步骤: 1. 引入加密库:微信小程序提供了`wx.request`方法来调用外部API,你可以引入第三方加密库,如`crypto-js`,通过npm安装后将其添加到项目中。 2. ...

    Base64加密解密java/js

    参照网上Base64 js加密解密写的java实现,网上没看到出现过,可能大神都不屑写这种小东东,只好自己写了。弄了好几天,总算弄好了。 因为是参照 js Base64写的java实现,所以代码可实现前台js,后台java的加密,...

    JS base64 加密解密

    在JavaScript中,Base64编码常用于加密和解密敏感信息,如在网页参数中隐藏关键数据。 在JavaScript中,我们可以使用内置的`btoa()`和`atob()`函数来进行Base64的编码和解码操作。`btoa()`函数用于将字符串编码为...

    js实现base64加密

    在JavaScript中实现Base64加密,主要是为了将任意数据转化为一个可安全通过这些协议传输的字符串形式。下面我们将深入探讨Base64编码原理以及如何在JavaScript中实现它。 Base64编码的原理是将每3个字节(24位)的...

    js base64加密解密

    base64加密解密源码,纯js编写,内容copy于互联网,用作保留使用。

    加密解密Base64的js封装代码

    本文将深入探讨Base64编码原理,JavaScript中的实现方式,以及如何封装一个Base64的加密解密工具。 Base64编码的基本原理是将每3个字节(24位)的数据拆分为4组,每组6位,然后将这6位二进制数据转换为其对应的...

    Base64加密解密.zip

    总的来说,Base64在C#中的实现既简单又直观,通过使用`System.Convert`类提供的方法,可以轻松地在WinForm应用中实现Base64的加密解密功能。无论是处理文本还是二进制数据,这个工具都能提供安全、方便的数据转换...

    Base64 加密解密小工具

    总的来说,Base64是一种在不同系统之间传输二进制数据的便捷手段,而“Base64 加密解密小工具”则为用户提供了一个方便快捷的实现这一功能的平台。通过理解和熟练运用这类工具,可以更好地处理各种涉及二进制数据...

    jquery-base64加密解密,支持中文

    `jQuery`的Base64实现解决了这个问题,使得包含中文的字符串也可以安全地进行Base64转换。 描述中提到,加密发生在前端,使用`jQuery`,然后解密在后台,可能是Java环境中的Servlet。`jQuery`的`$.ajax`方法用于...

    base64加密解密源码(js)

    资源包中的"base64加密解密测试.html"文件很可能包含了一个完整的JavaScript Base64库,提供了自定义的Base64编解码功能。这个库可能包含了以下知识点: 1. **Base64编码**:讲解如何使用JavaScript进行Base64编码...

    javascript的base64加密解密

    JavaScript中的Base64编码...在开发过程中,要根据具体需求选择合适的加密解密方案,确保数据的隐私和安全。在使用`btoa()`和`atob()`函数时,需要注意其对非ASCII字符的支持限制,并在必要时引入第三方库来扩展功能。

    base64加密解密js版

    这篇文章将详细介绍Base64在JS中的应用以及如何进行加密解密操作。 首先,我们需要理解Base64的基本原理。Base64编码将每3个字节(24位)的数据转换为4个Base64字符(每个字符6位),总共使用64个不同的字符,包括...

    base64加密解密-js-utf-8

    base64中文加密 注意中文编码为UTF-8

    易语言Base64支持密码加密

    易语言Base64支持密码加密是一项在易语言编程环境下实现数据加密与解密的技术,它主要涉及到了两个关键概念:Base64编码和密码加密。Base64是一种用于将二进制数据转换为可打印字符的编码方式,而密码加密则是为了...

    js实现的Base64的加密解密方法

    综上所述,`js实现的Base64的加密解密方法`涉及了Base64编码的基本原理,JavaScript中的内置API,自定义实现的必要性和应用场景,以及相关的性能和安全性考虑。这些知识对于开发Web应用,尤其是处理二进制数据的场景...

    base64加密解密demo

    在这个"base64加密解密demo"中,我们将会深入探讨Base64的基本原理、加密过程、解密方法以及其在实际应用中的使用。 Base64的原理基于64个字符的字符集,包括大小写字母(A-Z, a-z)、数字(0-9)以及两个特殊字符`...

    JS源码 - Base64加密解密实例演示程序类

    总的来说,了解和掌握JavaScript中的Base64加密解密是Web开发中的一项基本技能,尤其在处理图片、JSON数据等需要在网络上传输的二进制内容时。同时,也要意识到其局限性,合理选择适合的加密策略以确保数据的安全。

    微信小程序base64加解密

    ArrayBuffer是JavaScript中处理二进制数据的基本类型,通过这两个API,我们就可以方便地在Base64字符串和ArrayBuffer之间进行转换,从而实现加解密操作。 以下是一个简单的示例: ```javascript // 加密 let plain...

Global site tag (gtag.js) - Google Analytics