二:Base64编码,解码函数
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))
}
分享到:
相关推荐
在SQL Server 2005中,Base64编码是一种常用的数据编码方式,它将二进制数据转化为可打印的ASCII字符,常用于在网络上传输或存储非ASCII字符的数据。Base64编码能够确保数据在传输过程中不被篡改,因为它是通过特定...
在JavaScript中,`base64.js`文件可能包含了一个Base64编码和解码的函数库,例如`btoa()`用于编码,`atob()`用于解码,这些原生JavaScript方法可以轻松处理Base64转换。 **MD5(Message-Digest Algorithm 5)**是一...
在JavaScript编程中,Base64和Base32是两种常见的数据编码方式,它们主要用于在网络上传输二进制数据。在本文中,我们将深入探讨这两种编码方法以及如何在JavaScript中实现它们,同时解决在Ajax请求中传递包含特殊...
Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。可查看RFC2045~RFC2049,上面有MIME的详细规范。 Base64要求把每三个8Bit的字节转换为四个6...
QByteArray是QT中的一个用于处理字节序列的类,而QCryptographicHash则提供了一些加密哈希函数,其中包括Base64编码和解码。 1. **Base64编码**: - 首先,我们需要读取图片文件的内容到一个QByteArray对象中。 -...
BASE64常用于电子邮件附件、图片和其他二进制数据的编码,在Web开发、加密算法以及数据传输等领域有广泛应用。 ### 文件结构分析 提供的代码示例是一个简单的BASE64编解码实现。该程序主要包括以下部分: #### 2.1...
throw new HiveException("Failed to decode Base64: " + e.getMessage()); } } } @Override public String getDisplayString(String[] children) { return "Base64 operation"; } @Override public ...
Base64 解码函数是将 Base64 编码数据转换回二进制数据的函数。下面是一个 C 语言实现的 Base64 解码函数: char *base64_decode(const char *data, int data_len) { ... } 这个函数将 Base64 编码数据转换回二...
易语言Base64编解码新汇编源码是一个针对易语言编程环境的代码资源,主要功能是实现Base64编码和解码。Base64是一种用于将任意二进制数据转换为可打印字符的编码方式,常用于在网络上传输包含二进制的数据,如图片或...
Base64编码是一种常用的将二进制数据转换为可打印字符的编码,占用空间较小。在RFC 3548中定义。Base64编码的原理是将数据编码成24bit的二进制数,然后将其分成四组,每组6bit,对应于一个数字:0-63。然后根据这个...
解密文本的过程则正好相反,首先,接收方需要对Base64编码的字符串进行解码,得到加密后的二进制数据,然后用相同的密码进行解密,从而恢复原始文本。这个过程需要确保密码的准确性和安全性,否则解密将无法成功。 ...
"加密,解密,Base64编码,解码,Hex的编码解码的工具类"是一个非常实用的软件模块,它提供了对数据进行不同形式处理的功能。让我们深入探讨一下这些概念以及它们在实际应用中的作用。 首先,我们来看加密。加密是...
另一个名为"base64解码"的函数,则用于将Base64编码的字符串还原为原始的二进制数据。 在提供的压缩包文件"base64.e"中,很可能是包含了一个易语言的程序或者库文件,用于实现Base64的编码和解码功能。这个文件可能...
5. **Base64编码/解码**:用于将二进制数据转换为可打印的ASCII字符,便于在网络上传输。 6. **PBKDF2(密码基于密钥派生函数2)**:用于通过用户输入的密码生成加密密钥,增加了密码破解的难度。 使用Crypto-js库...
总的来说,这个纯JavaScript的Base64加密解密工具类为开发者提供了一种轻量级、自包含的方式来处理Base64编码和解码任务,尤其适用于那些希望避免引入额外依赖的项目。了解和掌握Base64编码与解码的基本原理和实现...
在SQL Server 2005中,开发人员经常需要处理数据加密和编码转换,例如Base64、MD5和SHA1。这些算法在数据库安全、数据验证和信息完整性方面起着重要作用。本篇文章将详细介绍如何在SQL Server 2005环境下轻松实现这...
6. 使用Base64解码函数将字符串转换回字节数组。 7. 将解码后的字节数组写入新的图像文件。 在实际开发中,你可能需要处理错误检查、异常处理以及优化性能等问题。例如,确保输入图像文件的正确性,处理Base64编码...
标题“使用JS加密BASE64”指的是利用JavaScript来对字符串或二进制数据进行BASE64编码。这种操作通常用于将非ASCII字符转换为可以在URL、邮件头或其他仅支持ASCII的地方使用的格式。在描述中提到的“将字符串或二...
4. **解码实现**:`base64.h`中可能会有一个`decodeBase64`函数,它接受Base64编码的字符串,返回解码后的二进制数据。这个函数需要处理Base64字符串中的填充字符,并确保正确恢复原始字节顺序。 5. **边界情况处理...
JavaScript中的Base64编码是一种广泛使用的数据编码方式,它将任意二进制数据转换成可打印的ASCII字符串,便于在网络上传输。Base64编码基于标准的64个字符,这些字符都属于URL和电子邮件安全的ASCII子集,因此在...