`
zhaole609
  • 浏览: 342699 次
  • 性别: Icon_minigender_1
  • 来自: 河南
社区版块
存档分类
最新评论

php中的base64decode 与js中的相互转换

 
阅读更多

<script language='javascript'>
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;
}

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;
}
//input base64 encode
function str_decode(str){
        return utf8to16(base64decode(str));
}
function str_encode(str){
    return base64encode(utf16to8(str));
}
</script>

分享到:
评论

相关推荐

    PHP+JS 图片转Base64

    【PHP+JS 图片转Base64】是一个常见的前端与后端协作的图像处理技术,主要应用于网页上传图片并将其编码为字符串以便在网络传输中更高效地处理。在这个过程中,JavaScript用于前端获取用户选择的图片文件,并将其...

    PHP+JS Base64和URI编码解码混合使用

    在IT行业中,编码和解码是数据传输与存储过程中不可或缺的部分。...在"PHP+JS Base64和URI编码解码混合使用"这个主题中,我们可以学习到如何在客户端和服务器之间有效地处理编码数据,提高代码的可读性和兼容性。

    PHP+JS Base64和URI编码解码

    PHP和JavaScript作为Web开发中的常用语言,都提供了对Base64和URI编码的支持。本文将深入探讨这两个概念及其在PHP和JavaScript中的实现。 首先,让我们理解Base64编码。Base64是一种将二进制数据转换为ASCII字符集...

    JS实现小图片Base64上传php接收实例

    在这个"JS实现小图片Base64上传php接收实例"中,我们将探讨如何使用JavaScript处理小图片,并将其编码为Base64字符串,然后通过POST请求发送到PHP服务器进行接收和处理。这种方法特别适用于上传小型图片,避免了传统...

    base64:EncodeDecode Base64

    例如,在Python中,可以使用`base64`模块的`b64encode()`和`b64decode()`方法进行Base64编码和解码操作。在JavaScript中,可以使用`btoa()`和`atob()`函数。其他语言如Java、C#、PHP等也有相应的内置函数或第三方库...

    Base62 Encode/Decode Utility:用于对base62进行编码/解码的工具-开源

    chewingum软件包包含两个主要程序:-base62-chew它们已在perl中实现。 Base62也已经用c ++编码。 嚼被写成缩短长的十进制整数到base62字符串。 这不是单纯的基本转换,因为它在逻辑内部不使用算术运算。 这样,它...

    php实现base64图片上传方式实例代码

    - 转换完成后,将Base64字符串显示在文本域中,并通过`&lt;img&gt;`标签预览图片。 #### PHP后端实现 接下来,我们来看看PHP是如何接收和处理这些Base64编码的图片数据的。 ##### PHP代码分析 ```php &lt;?php /** * ...

    PHP实现本地图片转base64格式并上传|angluo-php-314431.pdf

    Base64是一种用于在网络上传输二进制数据的编码方式,它可以将任何类型的数据转换成ASCII字符串,方便在网络协议中传输。 首先,我们要理解前端的实现过程。HTML5中的FileReader接口允许我们读取文件,特别是读取...

    两个JS+PHP裁切图片实例

    在本文中,我们将深入探讨如何使用JavaScript(JS)和PHP结合来实现图片裁切功能。这个功能在网页设计和开发中非常常见,特别是在用户需要上传并编辑个人头像或者产品图片时。以下是对"两个JS+PHP裁切图片实例"的...

    PHP+JS实现扫一扫功能 扫描二维码(QR Code)内容

    在`readQRCode`函数中,我们首先获取二维码图片的`src`属性,然后使用`FileReader` API将图片转换为`base64`编码,以便于通过AJAX发送到服务器。 5. **PHP解码二维码**: 在服务器端,接收`base64`编码的图片数据...

    PHP开发过程中AES加密解密问题 js前端AES加密,PHP解密

    2. **解码Base64**:使用`base64_decode`函数将Base64字符串转换回二进制格式。 3. **解密数据**:使用`openssl_decrypt`函数进行解密,确保设置正确的模式(如CBC或ECB)、填充方式和密钥。 4. **处理解密后的数据*...

    JS实现openssl式RSA,可与php互通

    PHP中,用`base64_encode()`和`base64_decode()`。 5. **数字签名与验证**: - JavaScript中,使用`crypto.subtle.sign()`创建RSA签名,然后用`crypto.subtle.verify()`验证签名。签名通常需要先转换为DER格式。 ...

    php代码-Decode php parameter

    PHP提供了一系列内置函数来帮助开发者完成这个任务,例如`urldecode()`、`json_decode()`、`base64_decode()`等。 首先,我们来详细了解一下`urldecode()`函数。当数据通过URL传递时,为了防止特殊字符引起的问题,...

    jquery头像截图并上传到php服务器

    2. **Base64编码**:截图后的图片数据是Canvas对象,我们需要将其转换为Base64字符串以便于在网络上传输。这是通过调用`canvas.toDataURL()`方法完成的,它返回一个包含`data:`协议的数据URL,该URL表示图片内容的...

    jquery实现aes加密,后端php解密

    $encrypted = base64_decode($encryptedTextFromFrontend); // 前端传来的base64编码的密文 $key = hex2bin($keyHexFromFrontend); // 将前端传来的密钥(通常为16进制字符串)转换为二进制 $iv = hex2bin($...

    基于PHP的迅雷快车链接在线转换实现代码源码.zip

    4. **数据编码与解码**:迅雷链接中可能包含Base64编码的数据,因此,需要熟悉`base64_encode()`和`base64_decode()`函数。 5. **文件存储与读取**:在处理过程中,可能需要临时存储一些数据,这会涉及到PHP的文件...

    php+flash头像上传组件

    Base64是一种常见的编码方式,可以将二进制数据转换为ASCII字符串,方便在网络上传输。 PHP接收到Base64编码的图片后,需要进行解码,还原成原始的二进制图像数据。这个过程可以通过PHP内置的`base64_decode`函数来...

    html5 手机 拍照压缩上传 php+lrz压缩

    可以使用`base64_decode`函数将Base64字符串转换回二进制数据,然后写入文件。同时,PHP也可以进行二次处理,比如调整图片质量、尺寸等。这里使用了`localResizeIMG3`,这可能是一个PHP扩展或自定义函数,用于处理...

Global site tag (gtag.js) - Google Analytics