转: Javascript Base64编码与解码

Javascript Base64编码与解码

分类:            JavaScript            2015-02-04 14:25    212人阅读    评论(0)    收藏    举报

转自:http://blog.csdn.net/yanzhibo/article/details/20079943

[javascript] view plaincopy

  1. <html>
  2. <head>
  3. <META HTTP-EQUIV="MSThemeCompatible" CONTENT="Yes">
  4. <meta http-equiv="Content-Type" content="text/html; charset=unicode">
  5. <script language="JavaScript" type="text/javascript" src="../var.js"></script>
  6. <title>Base64 Encode and Decode</title>
  7. <style>
  8. </style>
  9. <script type="text/javascript" language="javascript">
  10. var base64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
  11. var base64DecodeChars = new Array(
  12. -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  13. -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  14. -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63,
  15. 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1,
  16. -1,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14,
  17. 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1,
  18. -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
  19. 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1);
  20. function base64encode(str) {
  21. var out, i, len;
  22. var c1, c2, c3;
  23. len = str.length;
  24. i = 0;
  25. out = "";
  26. while(i < len) {
  27. c1 = str.charCodeAt(i++) & 0xff;
  28. if(i == len)
  29. {
  30. out += base64EncodeChars.charAt(c1 >> 2);
  31. out += base64EncodeChars.charAt((c1 & 0x3) << 4);
  32. out += "==";
  33. break;
  34. }
  35. c2 = str.charCodeAt(i++);
  36. if(i == len)
  37. {
  38. out += base64EncodeChars.charAt(c1 >> 2);
  39. out += base64EncodeChars.charAt(((c1 & 0x3)<< 4) | ((c2 & 0xF0) >> 4));
  40. out += base64EncodeChars.charAt((c2 & 0xF) << 2);
  41. out += "=";
  42. break;
  43. }
  44. c3 = str.charCodeAt(i++);
  45. out += base64EncodeChars.charAt(c1 >> 2);
  46. out += base64EncodeChars.charAt(((c1 & 0x3)<< 4) | ((c2 & 0xF0) >> 4));
  47. out += base64EncodeChars.charAt(((c2 & 0xF) << 2) | ((c3 & 0xC0) >>6));
  48. out += base64EncodeChars.charAt(c3 & 0x3F);
  49. }
  50. return out;
  51. }
  52. function base64decode(str) {
  53. var c1, c2, c3, c4;
  54. var i, len, out;
  55. len = str.length;
  56. i = 0;
  57. out = "";
  58. while(i < len) {
  59. /* c1 */
  60. do {
  61. c1 = base64DecodeChars[str.charCodeAt(i++) & 0xff];
  62. } while(i < len && c1 == -1);
  63. if(c1 == -1)
  64. break;
  65. /* c2 */
  66. do {
  67. c2 = base64DecodeChars[str.charCodeAt(i++) & 0xff];
  68. } while(i < len && c2 == -1);
  69. if(c2 == -1)
  70. break;
  71. out += String.fromCharCode((c1 << 2) | ((c2 & 0x30) >> 4));
  72. /* c3 */
  73. do {
  74. c3 = str.charCodeAt(i++) & 0xff;
  75. if(c3 == 61)
  76. return out;
  77. c3 = base64DecodeChars[c3];
  78. } while(i < len && c3 == -1);
  79. if(c3 == -1)
  80. break;
  81. out += String.fromCharCode(((c2 & 0XF) << 4) | ((c3 & 0x3C) >> 2));
  82. /* c4 */
  83. do {
  84. c4 = str.charCodeAt(i++) & 0xff;
  85. if(c4 == 61)
  86. return out;
  87. c4 = base64DecodeChars[c4];
  88. } while(i < len && c4 == -1);
  89. if(c4 == -1)
  90. break;
  91. out += String.fromCharCode(((c3 & 0x03) << 6) | c4);
  92. }
  93. return out;
  94. }
  95. function utf16to8(str) {
  96. var out, i, len, c;
  97. out = "";
  98. len = str.length;
  99. for(i = 0; i < len; i++) {
  100. c = str.charCodeAt(i);
  101. if ((c >= 0x0001) && (c <= 0x007F)) {
  102. out += str.charAt(i);
  103. } else if (c > 0x07FF) {
  104. out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F));
  105. out += String.fromCharCode(0x80 | ((c >>  6) & 0x3F));
  106. out += String.fromCharCode(0x80 | ((c >>  0) & 0x3F));
  107. } else {
  108. out += String.fromCharCode(0xC0 | ((c >>  6) & 0x1F));
  109. out += String.fromCharCode(0x80 | ((c >>  0) & 0x3F));
  110. }
  111. }
  112. return out;
  113. }
  114. function utf8to16(str) {
  115. var out, i, len, c;
  116. var char2, char3;
  117. out = "";
  118. len = str.length;
  119. i = 0;
  120. while(i < len) {
  121. c = str.charCodeAt(i++);
  122. switch(c >> 4)
  123. {
  124. case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7:
  125. // 0xxxxxxx
  126. out += str.charAt(i-1);
  127. break;
  128. case 12: case 13:
  129. // 110x xxxx   10xx xxxx
  130. char2 = str.charCodeAt(i++);
  131. out += String.fromCharCode(((c & 0x1F) << 6) | (char2 & 0x3F));
  132. break;
  133. case 14:
  134. // 1110 xxxx  10xx xxxx  10xx xxxx
  135. char2 = str.charCodeAt(i++);
  136. char3 = str.charCodeAt(i++);
  137. out += String.fromCharCode(((c & 0x0F) << 12) |
  138. ((char2 & 0x3F) << 6) |
  139. ((char3 & 0x3F) << 0));
  140. break;
  141. }
  142. }
  143. return out;
  144. }
  145. function CharToHex(str) {
  146. var out, i, len, c, h;
  147. out = "";
  148. len = str.length;
  149. i = 0;
  150. while(i < len)
  151. {
  152. c = str.charCodeAt(i++);
  153. h = c.toString(16);
  154. if(h.length < 2)
  155. h = "0" + h;
  156. out += "\\x" + h + " ";
  157. if(i > 0 && i % 8 == 0)
  158. out += "\r\n";
  159. }
  160. return out;
  161. }
  162. function doEncode() {
  163. var src = document.getElementById(‘src‘).value;
  164. document.getElementById(‘dest‘).value = base64encode(utf16to8(src));
  165. }
  166. function doDecode() {
  167. var src = document.getElementById(‘src‘).value;
  168. var opts = document.getElementById(‘opt‘);
  169. if(opts.checked)
  170. {
  171. document.getElementById(‘dest‘).value = CharToHex(base64decode(src));
  172. }
  173. else
  174. {
  175. document.getElementById(‘dest‘).value = utf8to16(base64decode(src));
  176. }
  177. }
  178. </script>
  179. </head>
  180. <BODY bgcolor="#EAF0F8" topmargin="10" leftmargin="10" rightmargin="10" bottommargin="10">
  181. <div id="contain" style="font-family: Tahoma, Arial; font-size:11pt">
  182. <div id="mainbg">
  183. <div style="color: #000080; margin-bottom: 10"><b>Base64 Encode / Decode</b></div>
  184. <div>
  185. <textarea id="src" rows=11 cols=60 value="" name="src"></textarea>
  186. <div style="margin: 10 0 10 0">
  187. <input onclick="doEncode();" type=button value="Encode" name="encode">
  188. <input onclick="doDecode();" type=button value="Decode" name="decode">
  189. <input type="checkbox" value="hex" name="opt" id="opt">Hex
  190. </div>
  191. <textarea id="dest" rows=11 cols=60 value="" name="dest"></textarea>
  192. </div>
  193. </div>
  194. </div>
  195. </BODY>
  196. </html>
时间: 2024-08-10 00:05:05

转: Javascript Base64编码与解码的相关文章

Javascript Base64编码与解码

原文:[转]Javascript Base64编码与解码 <html> <head> <META HTTP-EQUIV="MSThemeCompatible" CONTENT="Yes"> <meta http-equiv="Content-Type" content="text/html; charset=unicode"> <script language="

win api 实现 base64编码、解码

最近在写小玩意,用到了base64编码,但是考虑到体积大小,网上的多种实现都是利用开源的代码,这就增加了其大小.我想win api能不能实现base64编码.解码.通过一通乱搜,还有收获.就有了以下代码 #pragma comment(lib,"crypt32.lib") LPSTR Base64Encode(LPBYTE lpBuffer,DWORD dwLen) { DWORD dwNeed; LPSTR lpBase64Str ; DWORD dwIndex ; DWORD dw

base64编码、解码的C语言实现

转自:http://www.cnblogs.com/yejianfei/archive/2013/04/06/3002838.html base64是一种基于64个可打印字符来表示二进制数据的表示方法.由于26=64,所以每6位为一个单位,对应某个可打印字符.三个字节共24位,对应于4个base64单位,即3个字节需要用4个可打印字符来表示.它常用来作为电子邮件的传输编码.在base64中的可打印字符包括大写英文字母A-Z,小写英文字母a-z.阿拉伯数字0-9,这样共有62个字符,此外两个可打印

python中base64编码与解码

引言: 在一些项目中,接口的报文是通过base64加密传输的,所以在进行接口自动化时,需要对所传的参数进行base64编码,对拿到的响应报文进行解码: Base64编码是一种"防君子不防小人"的编码方式.广泛应用于MIME协议,作为电子邮件的传输编码,生成的编码可逆,后一两位可能有"=",生成的编码都是ascii字符.优点:速度快,ascii字符,肉眼不可理解缺点:编码比较长,非常容易被破解,仅适用于加密非关键信息的场合python2中进行Base64编码和解码&g

PHP安全的URL字符串base64编码和解码

这篇文章主要介绍了PHP安全的URL字符串base64编码和解码,在base64的基础上替换了不安全的一些字符,需要的朋友可以参考下 如果直接使用base64_encode和base64_decode方法的话,生成的字符串可能不适用URL地址.下面的方法可以解决该问题: URL安全的字符串编码: function urlsafe_b64encode($string) {    $data = base64_encode($string);    $data = str_replace(array

java利用Base64编码和解码图片文件

1.编码与解码代码如下所示: import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; import javax.image

Python中进行Base64编码和解码

Base64编码是一种“防君子不防小人”的编码方式.广泛应用于MIME协议,作为电子邮件的传输编码,生成的编码可逆,后一两位可能有“=”,生成的编码都是ascii字符.优点:速度快,ascii字符,肉眼不可理解缺点:编码比较长,非常容易被破解,仅适用于加密非关键信息的场合Python中进行Base64编码和解码>>> import base64>>> s = '我是字符串'>>> a = base64.b64encode(s)>>>

android Java BASE64编码和解码二:图片的编码和解码

1.准备工作 (1)在项目中集成 Base64 代码,集成方法见第一篇博文:android Java BASE64编码和解码一:基础 (2)添加 ImgHelper 工具类 package com.app21; import java.io.ByteArrayOutputStream; import java.io.FileInputStream; import java.io.IOException; import android.graphics.Bitmap; import android

JavaScript: 详解Base64编码和解码

转载自:http://my.oschina.net/goal/blog/201032#OSC_h2_11 摘要 Base64是最常用的编码之一,比如开发中用于传递参数.现代浏览器中的<img />标签直接通过Base64字符串来渲染图片以及用于邮件中等等.Base64编码在RFC2045中定义,它被定义为:Base64内容传送编码被设计用来把任意序列的8位字节描述为一种不易被人直接识别的形式. JavaScript Base64 Unicode UTF16 UTF8 编码 目录[-] 字符编码