• asp.net Base64加解密


    1.前端

    JS:

    /*
     *  base64.js
     *
     *  Licensed under the BSD 3-Clause License.
     *    http://opensource.org/licenses/BSD-3-Clause
     *
     *  References:
     *    http://en.wikipedia.org/wiki/Base64
     */
    ; (function (global, factory) {
        typeof exports === 'object' && typeof module !== 'undefined'
            ? module.exports = factory(global)
            : typeof define === 'function' && define.amd
                ? define(factory) : factory(global)
    }((
        typeof self !== 'undefined' ? self
            : typeof window !== 'undefined' ? window
                : typeof global !== 'undefined' ? global
                    : this
    ), function (global) {
        'use strict';
        // existing version for noConflict()
        global = global || {};
        var _Base64 = global.Base64;
        var version = "2.5.1";
        // if node.js and NOT React Native, we use Buffer
        var buffer;
        if (typeof module !== 'undefined' && module.exports) {
            try {
                buffer = eval("require('buffer').Buffer");
            } catch (err) {
                buffer = undefined;
            }
        }
        // constants
        var b64chars
            = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
        var b64tab = function (bin) {
            var t = {};
            for (var i = 0, l = bin.length; i < l; i++) t[bin.charAt(i)] = i;
            return t;
        }(b64chars);
        var fromCharCode = String.fromCharCode;
        // encoder stuff
        var cb_utob = function (c) {
            if (c.length < 2) {
                var cc = c.charCodeAt(0);
                return cc < 0x80 ? c
                    : cc < 0x800 ? (fromCharCode(0xc0 | (cc >>> 6))
                        + fromCharCode(0x80 | (cc & 0x3f)))
                        : (fromCharCode(0xe0 | ((cc >>> 12) & 0x0f))
                            + fromCharCode(0x80 | ((cc >>> 6) & 0x3f))
                            + fromCharCode(0x80 | (cc & 0x3f)));
            } else {
                var cc = 0x10000
                    + (c.charCodeAt(0) - 0xD800) * 0x400
                    + (c.charCodeAt(1) - 0xDC00);
                return (fromCharCode(0xf0 | ((cc >>> 18) & 0x07))
                    + fromCharCode(0x80 | ((cc >>> 12) & 0x3f))
                    + fromCharCode(0x80 | ((cc >>> 6) & 0x3f))
                    + fromCharCode(0x80 | (cc & 0x3f)));
            }
        };
        var re_utob = /[uD800-uDBFF][uDC00-uDFFFF]|[^x00-x7F]/g;
        var utob = function (u) {
            return u.replace(re_utob, cb_utob);
        };
        var cb_encode = function (ccc) {
            var padlen = [0, 2, 1][ccc.length % 3],
                ord = ccc.charCodeAt(0) << 16
                    | ((ccc.length > 1 ? ccc.charCodeAt(1) : 0) << 8)
                    | ((ccc.length > 2 ? ccc.charCodeAt(2) : 0)),
                chars = [
                    b64chars.charAt(ord >>> 18),
                    b64chars.charAt((ord >>> 12) & 63),
                    padlen >= 2 ? '=' : b64chars.charAt((ord >>> 6) & 63),
                    padlen >= 1 ? '=' : b64chars.charAt(ord & 63)
                ];
            return chars.join('');
        };
        var btoa = global.btoa ? function (b) {
            return global.btoa(b);
        } : function (b) {
            return b.replace(/[sS]{1,3}/g, cb_encode);
        };
        var _encode = function (u) {
            const isUint8Array = Object.prototype.toString.call(u) === '[object Uint8Array]';
            return isUint8Array ? u.toString('base64')
                : btoa(utob(String(u)));
        }
        var encode = function (u, urisafe) {
            return !urisafe
                ? _encode(u)
                : _encode(String(u)).replace(/[+/]/g, function (m0) {
                    return m0 == '+' ? '-' : '_';
                }).replace(/=/g, '');
        };
        var encodeURI = function (u) { return encode(u, true) };
        // decoder stuff
        var re_btou = new RegExp([
            '[xC0-xDF][x80-xBF]',
            '[xE0-xEF][x80-xBF]{2}',
            '[xF0-xF7][x80-xBF]{3}'
        ].join('|'), 'g');
        var cb_btou = function (cccc) {
            switch (cccc.length) {
                case 4:
                    var cp = ((0x07 & cccc.charCodeAt(0)) << 18)
                        | ((0x3f & cccc.charCodeAt(1)) << 12)
                        | ((0x3f & cccc.charCodeAt(2)) << 6)
                        | (0x3f & cccc.charCodeAt(3)),
                        offset = cp - 0x10000;
                    return (fromCharCode((offset >>> 10) + 0xD800)
                        + fromCharCode((offset & 0x3FF) + 0xDC00));
                case 3:
                    return fromCharCode(
                        ((0x0f & cccc.charCodeAt(0)) << 12)
                        | ((0x3f & cccc.charCodeAt(1)) << 6)
                        | (0x3f & cccc.charCodeAt(2))
                    );
                default:
                    return fromCharCode(
                        ((0x1f & cccc.charCodeAt(0)) << 6)
                        | (0x3f & cccc.charCodeAt(1))
                    );
            }
        };
        var btou = function (b) {
            return b.replace(re_btou, cb_btou);
        };
        var cb_decode = function (cccc) {
            var len = cccc.length,
                padlen = len % 4,
                n = (len > 0 ? b64tab[cccc.charAt(0)] << 18 : 0)
                    | (len > 1 ? b64tab[cccc.charAt(1)] << 12 : 0)
                    | (len > 2 ? b64tab[cccc.charAt(2)] << 6 : 0)
                    | (len > 3 ? b64tab[cccc.charAt(3)] : 0),
                chars = [
                    fromCharCode(n >>> 16),
                    fromCharCode((n >>> 8) & 0xff),
                    fromCharCode(n & 0xff)
                ];
            chars.length -= [0, 0, 2, 1][padlen];
            return chars.join('');
        };
        var _atob = global.atob ? function (a) {
            return global.atob(a);
        } : function (a) {
            return a.replace(/S{1,4}/g, cb_decode);
        };
        var atob = function (a) {
            return _atob(String(a).replace(/[^A-Za-z0-9+/]/g, ''));
        };
        var _decode = buffer ?
            buffer.from && Uint8Array && buffer.from !== Uint8Array.from
                ? function (a) {
                    return (a.constructor === buffer.constructor
                        ? a : buffer.from(a, 'base64')).toString();
                }
                : function (a) {
                    return (a.constructor === buffer.constructor
                        ? a : new buffer(a, 'base64')).toString();
                }
            : function (a) { return btou(_atob(a)) };
        var decode = function (a) {
            return _decode(
                String(a).replace(/[-_]/g, function (m0) { return m0 == '-' ? '+' : '/' })
                    .replace(/[^A-Za-z0-9+/]/g, '')
            );
        };
        var noConflict = function () {
            var Base64 = global.Base64;
            global.Base64 = _Base64;
            return Base64;
        };
        // export Base64
        global.Base64 = {
            VERSION: version,
            atob: atob,
            btoa: btoa,
            fromBase64: decode,
            toBase64: encode,
            utob: utob,
            encode: encode,
            encodeURI: encodeURI,
            btou: btou,
            decode: decode,
            noConflict: noConflict,
            __buffer__: buffer
        };
        // if ES5 is available, make Base64.extendString() available
        if (typeof Object.defineProperty === 'function') {
            var noEnum = function (v) {
                return { value: v, enumerable: false, writable: true, configurable: true };
            };
            global.Base64.extendString = function () {
                Object.defineProperty(
                    String.prototype, 'fromBase64', noEnum(function () {
                        return decode(this)
                    }));
                Object.defineProperty(
                    String.prototype, 'toBase64', noEnum(function (urisafe) {
                        return encode(this, urisafe)
                    }));
                Object.defineProperty(
                    String.prototype, 'toBase64URI', noEnum(function () {
                        return encode(this, true)
                    }));
            };
        }
        //
        // export Base64 to the namespace
        //
        if (global['Meteor']) { // Meteor.js
            Base64 = global.Base64;
        }
        // module.exports and AMD are mutually exclusive.
        // module.exports has precedence.
        if (typeof module !== 'undefined' && module.exports) {
            module.exports.Base64 = global.Base64;
        }
        else if (typeof define === 'function' && define.amd) {
            // AMD. Register as an anonymous module.
            define([], function () { return global.Base64 });
        }
        // that's it!
        return { Base64: global.Base64 }
    }));

    使用

    Base64.encode(str)

    2.后台

    帮助类:

    public static class Base64Helper
        {
            /// <summary>
            /// URL的操作类
            /// </summary>
            static System.Text.Encoding encoding = System.Text.Encoding.UTF8;
    
    
            //public static string Base64DesEncrypt(string strPath)
            //{
            //    Encoding encode = Encoding.ASCII;
            //    byte[] bytedata = encode.GetBytes(strPath);
            //    string returnData = Convert.ToBase64String(bytedata, 0, bytedata.Length);
            //    return returnData;
            //}
            #region URL的64位编码
    
            public static string Base64Encrypt(string sourthUrl)
            {
                string eurl = HttpUtility.UrlEncode(sourthUrl);
                eurl = Convert.ToBase64String(encoding.GetBytes(eurl));
                return eurl;
            }
    
            #endregion
    
            #region URL的64位解码
    
            public static string Base64Decrypt(string eStr)
            {
                if (!IsBase64(eStr))
                {
                    return eStr;
                }
                byte[] buffer = Convert.FromBase64String(eStr);
                string sourthUrl = encoding.GetString(buffer);
                sourthUrl = HttpUtility.UrlDecode(sourthUrl);
                return sourthUrl;
            }
    
            /// <summary>
            /// 是否是Base64字符串
            /// </summary>
            /// <param name="eStr"></param>
            /// <returns></returns>
            public static bool IsBase64(string eStr)
            {
                if ((eStr.Length % 4) != 0)
                {
                    return false;
                }
                if (!Regex.IsMatch(eStr, "^[A-Z0-9/+=]*$", RegexOptions.IgnoreCase))
                {
                    return false;
                }
                return true;
            }
    
            #endregion
    
            /// <summary>
            /// 添加URL参数
            /// </summary>
            public static string AddParam(string url, string paramName, string value)
            {
                Uri uri = new Uri(url);
                if (string.IsNullOrEmpty(uri.Query))
                {
                    string eval = HttpContext.Current.Server.UrlEncode(value);
                    return String.Concat(url, "?" + paramName + "=" + eval);
                }
                else
                {
                    string eval = HttpContext.Current.Server.UrlEncode(value);
                    return String.Concat(url, "&" + paramName + "=" + eval);
                }
            }
    
            /// <summary>
            /// 更新URL参数
            /// </summary>
            public static string UpdateParam(string url, string paramName, string value)
            {
                string keyWord = paramName + "=";
                int index = url.IndexOf(keyWord) + keyWord.Length;
                int index1 = url.IndexOf("&", index);
                if (index1 == -1)
                {
                    url = url.Remove(index, url.Length - index);
                    url = string.Concat(url, value);
                    return url;
                }
                url = url.Remove(index, index1 - index);
                url = url.Insert(index, value);
                return url;
            }
    
            #region 分析URL所属的域
    
            public static void GetDomain(string fromUrl, out string domain, out string subDomain)
            {
                domain = "";
                subDomain = "";
                try
                {
                    if (fromUrl.IndexOf("的名片") > -1)
                    {
                        subDomain = fromUrl;
                        domain = "名片";
                        return;
                    }
                    UriBuilder builder = new UriBuilder(fromUrl);
                    fromUrl = builder.ToString();
                    Uri u = new Uri(fromUrl);
                    if (u.IsWellFormedOriginalString())
                    {
                        if (u.IsFile)
                        {
                            subDomain = domain = "客户端本地文件路径";
                        }
                        else
                        {
                            string Authority = u.Authority;
                            string[] ss = u.Authority.Split('.');
                            if (ss.Length == 2)
                            {
                                Authority = "www." + Authority;
                            }
                            int index = Authority.IndexOf('.', 0);
                            domain = Authority.Substring(index + 1, Authority.Length - index - 1)
                                .Replace("comhttp", "com");
                            subDomain = Authority.Replace("comhttp", "com");
                            if (ss.Length < 2)
                            {
                                domain = "不明路径";
                                subDomain = "不明路径";
                            }
                        }
                    }
                    else
                    {
                        if (u.IsFile)
                        {
                            subDomain = domain = "客户端本地文件路径";
                        }
                        else
                        {
                            subDomain = domain = "不明路径";
                        }
                    }
                }
                catch
                {
                    subDomain = domain = "不明路径";
                }
            }
    
            /// <summary>
            /// 分析 url 字符串中的参数信息
            /// </summary>
            /// <param name="url">输入的 URL</param>
            /// <param name="baseUrl">输出 URL 的基础部分</param>
            /// <param name="nvc">输出分析后得到的 (参数名,参数值) 的集合</param>
            public static void ParseUrl(string url, out string baseUrl, out NameValueCollection nvc)
            {
                if (url == null)
                    throw new ArgumentNullException("url");
                nvc = new NameValueCollection();
                baseUrl = "";
                if (url == "")
                    return;
                int questionMarkIndex = url.IndexOf('?');
                if (questionMarkIndex == -1)
                {
                    baseUrl = url;
                    return;
                }
                baseUrl = url.Substring(0, questionMarkIndex);
                if (questionMarkIndex == url.Length - 1)
                    return;
                string ps = url.Substring(questionMarkIndex + 1);
                // 开始分析参数对    
                Regex re = new Regex(@"(^|&)?(w+)=([^&]+)(&|$)?", RegexOptions.Compiled);
                MatchCollection mc = re.Matches(ps);
                foreach (Match m in mc)
                {
                    nvc.Add(m.Result("$2").ToLower(), m.Result("$3"));
                }
            }
    
            #endregion
        }
    View Code
  • 相关阅读:
    java中判断文件存在与否
    crontab安装以及定时任务的执行
    su命令学习
    linux中如何查看哪些用户允许登录
    linux中的压缩文件的格式
    R语言学习(瑞士军刀)
    linux下mysql导入导出sql文件
    创建线程池的7种方法
    docker运行tomcat
    Docker之镜像
  • 原文地址:https://www.cnblogs.com/zhang1f/p/11794547.html
Copyright © 2020-2023  润新知