var StringUtil = new function()
{
this.Base64Encode = function(str)
{
return base64encode(utf16to8(str));
};
this.Base64Decode = function(str)
{
return utf8to16(base64decode(str))
};
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);
var base64encode = function(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;
};
var base64decode = function(str)
{
var c1, c2, c3, c4;
var i, len, out;
len = str.length;
i = 0;
out = "";
while (i < len)
{
do
{
c1 = base64DecodeChars[str.charCodeAt(i++) & 0xff];
} while (i < len && c1 == -1);
if (c1 == -1)
break;
do
{
c2 = base64DecodeChars[str.charCodeAt(i++) & 0xff];
} while (i < len && c2 == -1);
if (c2 == -1)
break;
out += String.fromCharCode((c1 << 2) | ((c2 & 0x30) >> 4));
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));
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;
};
var utf16to8 = function(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;
};
var utf8to16 = function(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:
out += str.charAt(i - 1);
break;
case 12: case 13:
char2 = str.charCodeAt(i++);
out += String.fromCharCode(((c & 0x1F) << 6) | (char2 & 0x3F));
break;
case 14:
char2 = str.charCodeAt(i++);
char3 = str.charCodeAt(i++);
out += String.fromCharCode(((c & 0x0F) << 12) | ((char2 & 0x3F) << 6) | ((char3 & 0x3F) << 0));
break;
}
}
return out;
}
}
分享到:
相关推荐
在IT领域,尤其是在Web开发中,图片文件与Base64编码字节数组字符串的转换是一种常见的操作。这种转换在不直接使用图片文件路径或URL,而是将图片数据嵌入到HTML、CSS或JavaScript中时非常有用。下面我们将详细探讨...
反向操作是将Base64编码的字符串解码回原始的二进制数据,然后保存为PDF文件。这个过程包括两个步骤:首先,使用Base64解码算法将字符串转换回二进制数据;其次,将解码后的二进制数据写入新的PDF文件中。 3. **...
反之,如果你从JavaScript接收到Base64字符串,可能需要添加回车换行符以便在Delphi中正确解码: ```delphi // 在Base64字符串中添加回车换行符 Base64String := StringReplace(Base64String, '', #13#10 + '', ...
"图片互转Base64"是指将图片文件转换成Base64字符串,同时也能够将Base64字符串还原为图片文件。这种技术在存储和传输图像时特别有用,因为它允许在不依赖外部文件的情况下嵌入图片到HTML或JavaScript代码中。 图片...
1. **解析Base64字符串**:首先,我们需要将接收到的Base64字符串按照Base64编码规则解码,得到原始的二进制数据。 2. **创建图片文件**:解码后的二进制数据是原始的图片内容,可以使用编程语言的相应库来创建一个...
ASP(Active Server ...综合上述知识点,"基于ASP的图片base64编码互转工具"是一个实用的工具,它结合了文件操作、二进制数据处理和编码解码技术,方便地实现了图片与base64编码的相互转换,适用于各种Web应用场景。
为了确保互操作,开发者可能需要进行一些额外的步骤,比如在JavaScript中使用Base64编码将二进制数据转换为字符串,然后在Java端进行解码。 总结来说,"可互操作的Java和JavaScript AES/128/192/256加密算法代码"这...
- 接收已加密的Base64字符串`source`,先进行Base64解码。 - 对解码后的字节数组进行Xxtea解密,得到32位整数数组。 - 将解密后的整数数组转换回字节数组,并恢复原始UTF8编码,最后解码为字符串返回。 在加密和...
这通常意味着在Java端生成密钥后,将其转换为Base64字符串,然后在JavaScript端解码成字节数组。 2. **填充模式**:Java的`Cipher`类允许选择不同的填充模式,如PKCS5Padding。JavaScript实现也需要匹配这种填充。 ...
这意味着Java开发者也可以方便地使用Base47编码解码器,这得益于Kotlin与Java的互操作性。 至于"EmojiKotlin",这可能是项目的一个子模块或者库,专门处理与表情符号相关的操作,例如解析和验证表情符号编码,或者...
同时,由于JavaScript可能无法处理字节流,所以可能需要将加密后的字节转换为Base64编码的字符串。在Java端解密时,需要先将Base64字符串解码回字节流。 5. **文件`DES加密解密`**: 压缩包中的文件可能包含了Java...
4. **编码格式**:确保Java和JavaScript在进行字符串到字节数组的转换时使用相同的字符编码,如UTF-8。 5. **数据格式**:加密后的结果是字节数据,需要以某种方式(如Base64编码)在Java和JavaScript之间传输。 ...
反过来,解码过程就是从文本文件中读取Base64字符串并将其还原为原始图像。 在实际应用中,图片转文本的功能通常用于光学字符识别(OCR),比如从扫描的文档或图片中提取可编辑的文字。而文本转图片则有助于保护...
Base64是一种编码方式,将二进制数据转换为ASCII字符串,方便在网络上传输。Hex则是十六进制表示法。这个文件提供了在Base64和十六进制之间转换的功能,这在处理加密后的数据时非常有用,因为加密后的数据通常是二...
它涉及到了字符编码、字符串比较、规范化等方面,对于处理多语言环境下的网络应用至关重要。 在"utils"库中,"Precis"实用工具提供了与PRECIS框架相关的辅助函数,比如字符串的规范化处理、字符集的转换、字符串...
通常,C#加密的数据需要转换为Base64字符串,然后在JavaScript中解码并解密,反之亦然。 6. **密钥管理**:妥善保管私钥至关重要,尤其是在客户端JavaScript中,因为JavaScript代码容易被逆向工程。一般情况下,...
ROT-13,JavaScript encodeURI(),encodeURIComponent(),HTML特殊字符编码/解码用法:输入文本并单击结果。 它将被复制到剪贴板。 可以在单独的窗口中打开扩展名。 源代码可在github上找到。 支持语言:English
哈希器(Firefox 扩展) ... 密码(可与 OpenSSL 互操作) :AES-256、DES、三重 DES、Rabbit、RC4、RC4Drop。 使用 CBC/Pkcs7。 网络:子网计算器,IP :left-right_arrow: Dec, Ip → Bin, Ip → Hex
- 在Flash中,可以使用BitmapData对象读取并编码图片为Base64字符串或其他格式,如JPEG或PNG,然后通过ExternalInterface.call方法调用C#的方法,将图片数据传过去。 - C#端需要定义一个接收图片数据的函数,例如...
为确保互操作性,通常需要将RSA密钥转换为标准格式,如Base64编码的PEM或DER格式。在JAVA端生成密钥后,可以通过HTTP服务(例如这里的`rsaServlet`)将密钥传输给前端JavaScript。前端JavaScript接收并解码密钥,...