base64编码/解码

原创 2004年04月22日 14:43:00

编者:解决了对中文的不支持问题.
先用escape()对中文进行编码.然后再进行base64编码.
解码时,再加入unescape()对中文进行解码.

<html>
   <head>
      <title>base64 Encoding/Decoding</title>
   </head>

   <script type="text/javascript"><!--

   var keyStr = "ABCDEFGHIJKLMNOP" +
                "QRSTUVWXYZabcdef" +
                "ghijklmnopqrstuv" +
                "wxyz0123456789+/" +
                "=";

   function encode64(input) {
      input = escape(input);
      var output = "";
      var chr1, chr2, chr3 = "";
      var enc1, enc2, enc3, enc4 = "";
      var i = 0;

      do {
         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);
         chr1 = chr2 = chr3 = "";
         enc1 = enc2 = enc3 = enc4 = "";
      } while (i < input.length);

      return output;
   }

   function decode64(input) {
      var output = "";
      var chr1, chr2, chr3 = "";
      var enc1, enc2, enc3, enc4 = "";
      var i = 0;

      // remove all characters that are not A-Z, a-z, 0-9, +, /, or =
      var base64test = /[^A-Za-z0-9/+///=]/g;
      if (base64test.exec(input)) {
         alert("There were invalid base64 characters in the input text./n" +
               "Valid base64 characters are A-Z, a-z, 0-9, '+', '/', and '='/n" +
               "Expect errors in decoding.");
      }
      input = input.replace(/[^A-Za-z0-9/+///=]/g, "");

      do {
         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);
         }

         chr1 = chr2 = chr3 = "";
         enc1 = enc2 = enc3 = enc4 = "";

      } while (i < input.length);

      return unescape(output);
   }

   //--></script>

   <body>

      <form name="base64Form">

         Type in the message you want to encode in base64, or paste<br>
         base64 encoded text into the text field, select Encode or Decode, <br>
         and click the button!<br>

         <textarea name="theText" cols="40" rows="6"></textarea><br>

         <input type="button" name="encode" value="Encode to base64"
            onClick="document.base64Form.theText.value=encode64(document.base64Form.theText.value);">
         <input type="button" name="decode" value="Decode from base64"
            onClick="document.base64Form.theText.value=decode64(document.base64Form.theText.value);">

      </form>

   </body>
</html>

Base64的使用,解码和编码

Java Base64 这是一个用于编码和解码(encode/decode )base64字符串和数据流的Java开源类库。Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一。可用来作...
  • lzqjfly
  • lzqjfly
  • 2013年04月24日 10:20
  • 2852

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

一、编码规则     Base64编码的思想是是采用64个基本的ASCII码字符对数据进行重新编码。它将需要编码的数据拆分成字节数组。以3个字节为一组。按顺序排列24位数据,再把这24位数据分成4组,...
  • nana2046
  • nana2046
  • 2009年04月23日 13:42
  • 13421

java 中使用base64编码和解码:

java 中使用base64编码和解码:   第一种方式: 通过反射使用java 中不对外公开的类: Java代码   /***       * encode by Base64   ...
  • QMW19910301
  • QMW19910301
  • 2015年10月15日 15:28
  • 1090

Js实现Base64编码、解码

1.加密解密方法使用: //1.加密 var str = '124中文内容'; var base = new Base64(); var result = base.encode(str); //d...
  • u011127019
  • u011127019
  • 2016年06月14日 17:17
  • 27604

JS实现UTF8编解码及Base64编解码

最近抽了点时间去了解了下Unicode,UTF-8,Base64之间的关系,以及它们之间 的一些转换规则,并且自己动手按照相应的编码规则实现了相应的编解码,虽然写的很生硬,没有网上一些大神写的那么简洁...
  • Kenny_cn
  • Kenny_cn
  • 2017年07月11日 23:30
  • 995

java实现base64编码和解码

编码规则:1、将3个字节转为4个字节,即每6个字节一组,高位补0                    2、原字节长度不是3的整数倍,结果串末尾使用=号补齐 以下是使用java代码的是实现 publi...
  • wzl19870309
  • wzl19870309
  • 2016年05月11日 11:08
  • 930

原生JS实现base64解码与编码

什么是base64base64是用规定的64种字符来表示任意二进制数据的一种编码格式,而且这64种字符均是可见字符,而之所以要是可见的是因为在不同设备上处理不可见字符时可能发生错误。通常,电子邮件数据...
  • YuChenLi923
  • YuChenLi923
  • 2017年04月14日 11:33
  • 3270

Base64的编码和解码

为什么要使用Base64? 在设计这个编码的时候,我想设计人员最主要考虑了3个问题: 1.是否加密? 2.加密算法复杂程度和效率 3.如何处理传输? 加密是肯定的,但是加密的目的不...
  • petib_wangwei
  • petib_wangwei
  • 2014年08月19日 17:40
  • 2031

Java实现BASE64编解码

Java实现BASE64编解码作者:chszs,转载需注明。博客主页:http://blog.csdn.net/chszsBASE64和其他相似的编码算法通常用于转换二进制数据为文本数据,其目的是为了...
  • chszs
  • chszs
  • 2013年11月29日 17:20
  • 72738

PHP解码base64编码的图片例

有一个图片,用base64编码之后形成一个字符串,如何拿到原先的内容呢,需要新建两个文件。 一个文件负责解码base64字符串 base64.php ...
  • situjiang
  • situjiang
  • 2016年02月26日 15:20
  • 1300
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:base64编码/解码
举报原因:
原因补充:

(最多只允许输入30个字)