base64

function getLocalFilePath(path) {

    if (path.indexOf('_www') === 0 || path.indexOf('_doc') === 0 || path.indexOf('_documents') === 0 || path.indexOf('_downloads') === 0) {

        return path

    }

    if (path.indexOf('file://') === 0) {

        return path

    }

    if (path.indexOf('/storage/emulated/0/') === 0) {

        return path

    }

    if (path.indexOf('/') === 0) {

        var localFilePath = plus.io.convertAbsoluteFileSystem(path)

        if (localFilePath !== path) {

            return localFilePath

        } else {

            path = path.substr(1)

        }

    }

    return '_www/' + path

}

function dataUrlToBase64(str) {

    var array = str.split(',')

    return array[array.length - 1]

}

var index = 0

function getNewFileId() {

    return Date.now() + String(index++)

}

function biggerThan(v1, v2) {

    var v1Array = v1.split('.')

    var v2Array = v2.split('.')

    var update = false

    for (var index = 0; index < v2Array.length; index++) {

        var diff = v1Array[index] - v2Array[index]

        if (diff !== 0) {

            update = diff > 0

            break

        }

    }

    return update

}

export function pathToBase64(path) {

    return new Promise(function(resolve, reject) {

        if (typeof window === 'object' && 'document' in window) {

            if (typeof FileReader === 'function') {

                var xhr = new XMLHttpRequest()

                xhr.open('GET', path, true)

                xhr.responseType = 'blob'

                xhr.onload = function() {

                    if (this.status === 200) {

                        let fileReader = new FileReader()

                        fileReader.onload = function(e) {

                            resolve(e.target.result)

                        }

                        fileReader.onerror = reject

                        fileReader.readAsDataURL(this.response)

                    }

                }

                xhr.onerror = reject

                xhr.send()

                return

            }

            var canvas = document.createElement('canvas')

            var c2x = canvas.getContext('2d')

            var img = new Image

            img.onload = function() {

                canvas.width = img.width

                canvas.height = img.height

                c2x.drawImage(img, 0, 0)

                resolve(canvas.toDataURL())

                canvas.height = canvas.width = 0

            }

            img.onerror = reject

            img.src = path

            return

        }

        if (typeof plus === 'object') {

            plus.io.resolveLocalFileSystemURL(getLocalFilePath(path), function(entry) {

                entry.file(function(file) {

                    var fileReader = new plus.io.FileReader()

                    fileReader.onload = function(data) {

                        resolve(data.target.result)

                    }

                    fileReader.onerror = function(error) {

                        reject(error)

                    }

                    fileReader.readAsDataURL(file)

                }, function(error) {

                    reject(error)

                })

            }, function(error) {

                reject(error)

            })

            return

        }

        if (typeof wx === 'object' && wx.canIUse('getFileSystemManager')) {

            wx.getFileSystemManager().readFile({

                filePath: path,

                encoding: 'base64',

                success: function(res) {

                    resolve('data:image/png;base64,' + res.data)

                },

                fail: function(error) {

                    reject(error)

                }

            })

            return

        }

        reject(new Error('not support'))

    })

}

export function base64ToPath(base64) {

    return new Promise(function(resolve, reject) {

        if (typeof window === 'object' && 'document' in window) {

            base64 = base64.split(',')

            var type = base64[0].match(/:(.*?);/)[1]

            var str = atob(base64[1])

            var n = str.length

            var array = new Uint8Array(n)

            while (n--) {

                array[n] = str.charCodeAt(n)

            }

            return resolve((window.URL || window.webkitURL).createObjectURL(new Blob([array], { type: type })))

        }

        var extName = base64.split(',')[0].match(/data\:\S+\/(\S+);/)

        if (extName) {

            extName = extName[1]

        } else {

            reject(new Error('base64 error'))

        }

        var fileName = getNewFileId() + '.' + extName

        if (typeof plus === 'object') {

            var basePath = '_doc'

            var dirPath = 'uniapp_temp'

            var filePath = basePath + '/' + dirPath + '/' + fileName

            if (!biggerThan(plus.os.name === 'Android' ? '1.9.9.80627' : '1.9.9.80472', plus.runtime.innerVersion)) {

                plus.io.resolveLocalFileSystemURL(basePath, function(entry) {

                    entry.getDirectory(dirPath, {

                        create: true,

                        exclusive: false,

                    }, function(entry) {

                        entry.getFile(fileName, {

                            create: true,

                            exclusive: false,

                        }, function(entry) {

                            entry.createWriter(function(writer) {

                                writer.onwrite = function() {

                                    resolve(filePath)

                                }

                                writer.onerror = reject

                                writer.seek(0)

                                writer.writeAsBinary(dataUrlToBase64(base64))

                            }, reject)

                        }, reject)

                    }, reject)

                }, reject)

                return

            }

            var bitmap = new plus.nativeObj.Bitmap(fileName)

            bitmap.loadBase64Data(base64, function() {

                bitmap.save(filePath, {}, function() {

                    bitmap.clear()

                    resolve(filePath)

                }, function(error) {

                    bitmap.clear()

                    reject(error)

                })

            }, function(error) {

                bitmap.clear()

                reject(error)

            })

            return

        }

        if (typeof wx === 'object' && wx.canIUse('getFileSystemManager')) {

            var filePath = wx.env.USER_DATA_PATH + '/' + fileName

            wx.getFileSystemManager().writeFile({

                filePath: filePath,

                data: dataUrlToBase64(base64),

                encoding: 'base64',

                success: function() {

                    resolve(filePath)

                },

                fail: function(error) {

                    reject(error)

                }

            })

            return

        }

        reject(new Error('not support'))

    })

}

// base64加密开始 

    var keyStr = "ABCDEFGHIJKLMNOP" + "QRSTUVWXYZabcdef" + "ghijklmnopqrstuv" 

            + "wxyz0123456789+/" + "="; 



  export function encode64(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; 

    } 

    // base64加密结束 

加密和解密


const Base64 = {
    _keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
    encode: function(e) {
        var t = "";
        var n, r, i, s, o, u, a;
        var f = 0;
        e = Base64._utf8_encode(e);
        while (f < e.length) {
            n = e.charCodeAt(f++);
            r = e.charCodeAt(f++);
            i = e.charCodeAt(f++);
            s = n >> 2;
            o = (n & 3) << 4 | r >> 4;
            u = (r & 15) << 2 | i >> 6;
            a = i & 63;
            if (isNaN(r)) {
                u = a = 64
            } else if (isNaN(i)) {
                a = 64
            }
            t = t + this._keyStr.charAt(s) + this._keyStr.charAt(o) + this._keyStr.charAt(u) + this._keyStr.charAt(a)
        }
        return t
    },
    decode: function(e) {
        var t = "";
        var n, r, i;
        var s, o, u, a;
        var f = 0;
        e = e.replace(/[^A-Za-z0-9+/=]/g, "");
        while (f < e.length) {
            s = this._keyStr.indexOf(e.charAt(f++));
            o = this._keyStr.indexOf(e.charAt(f++));
            u = this._keyStr.indexOf(e.charAt(f++));
            a = this._keyStr.indexOf(e.charAt(f++));
            n = s << 2 | o >> 4;
            r = (o & 15) << 4 | u >> 2;
            i = (u & 3) << 6 | a;
            t = t + String.fromCharCode(n);
            if (u != 64) {
                t = t + String.fromCharCode(r)
            }
            if (a != 64) {
                t = t + String.fromCharCode(i)
            }
        }
        t = Base64._utf8_decode(t);
        return t
    },
    _utf8_encode: function(e) {
        e = e.replace(/rn/g, "n");
        var t = "";
        for (var n = 0; n < e.length; n++) {
            var r = e.charCodeAt(n);
            if (r < 128) {
                t += String.fromCharCode(r)
            } else if (r > 127 && r < 2048) {
                t += String.fromCharCode(r >> 6 | 192);
                t += String.fromCharCode(r & 63 | 128)
            } else {
                t += String.fromCharCode(r >> 12 | 224);
                t += String.fromCharCode(r >> 6 & 63 | 128);
                t += String.fromCharCode(r & 63 | 128)
            }
        }
        return t
    },
    _utf8_decode: function(e) {
        var t = "";
        var n = 0;
        var r = 0;
        var c1 =0;
        var c2 =0;
        var c3 =0;
        while (n < e.length) {
            r = e.charCodeAt(n);
            if (r < 128) {
                t += String.fromCharCode(r);
                n++
            } else if (r > 191 && r < 224) {
                c2 = e.charCodeAt(n + 1);
                t += String.fromCharCode((r & 31) << 6 | c2 & 63);
                n += 2
            } else {
                c2 = e.charCodeAt(n + 1);
                c3 = e.charCodeAt(n + 2);
                t += String.fromCharCode((r & 15) << 12 | (c2 & 63) << 6 | c3 & 63);
                n += 3
            }
        }
        return t
    }
}
 
export default Base64
image.png

解密
Base64.decode(password)
加密
Base64.encode(this.loginInfo.password)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,039评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,426评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,417评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,868评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,892评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,692评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,416评论 3 419
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,326评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,782评论 1 316
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,957评论 3 337
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,102评论 1 350
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,790评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,442评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,996评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,113评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,332评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,044评论 2 355

推荐阅读更多精彩内容