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 = , 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 < ) {
var cc = c.charCodeAt();
return cc < 0x80 ? c
: cc < 0x800 ? (fromCharCode(0xc0 | (cc >>> ))
+ fromCharCode(0x80 | (cc & 0x3f)))
: (fromCharCode(0xe0 | ((cc >>> ) & 0x0f))
+ fromCharCode(0x80 | ((cc >>> ) & 0x3f))
+ fromCharCode(0x80 | (cc & 0x3f)));
} else {
var cc = 0x10000
+ (c.charCodeAt() - 0xD800) * 0x400
+ (c.charCodeAt() - 0xDC00);
return (fromCharCode(0xf0 | ((cc >>> ) & 0x07))
+ fromCharCode(0x80 | ((cc >>> ) & 0x3f))
+ fromCharCode(0x80 | ((cc >>> ) & 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 = [, , ][ccc.length % ],
ord = ccc.charCodeAt() <<
| ((ccc.length > ? ccc.charCodeAt() : ) << )
| ((ccc.length > ? ccc.charCodeAt() : )),
chars = [
b64chars.charAt(ord >>> ),
b64chars.charAt((ord >>> ) & ),
padlen >= ? '=' : b64chars.charAt((ord >>> ) & ),
padlen >= ? '=' : b64chars.charAt(ord & )
];
return chars.join('');
};
var btoa = global.btoa ? function (b) {
return global.btoa(b);
} : function (b) {
return b.replace(/[\s\S]{,}/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 :
var cp = ((0x07 & cccc.charCodeAt()) << )
| ((0x3f & cccc.charCodeAt()) << )
| ((0x3f & cccc.charCodeAt()) << )
| (0x3f & cccc.charCodeAt()),
offset = cp - 0x10000;
return (fromCharCode((offset >>> ) + 0xD800)
+ fromCharCode((offset & 0x3FF) + 0xDC00));
case :
return fromCharCode(
((0x0f & cccc.charCodeAt()) << )
| ((0x3f & cccc.charCodeAt()) << )
| (0x3f & cccc.charCodeAt())
);
default:
return fromCharCode(
((0x1f & cccc.charCodeAt()) << )
| (0x3f & cccc.charCodeAt())
);
}
};
var btou = function (b) {
return b.replace(re_btou, cb_btou);
};
var cb_decode = function (cccc) {
var len = cccc.length,
padlen = len % ,
n = (len > ? b64tab[cccc.charAt()] << : )
| (len > ? b64tab[cccc.charAt()] << : )
| (len > ? b64tab[cccc.charAt()] << : )
| (len > ? b64tab[cccc.charAt()] : ),
chars = [
fromCharCode(n >>> ),
fromCharCode((n >>> ) & 0xff),
fromCharCode(n & 0xff)
];
chars.length -= [, , , ][padlen];
return chars.join('');
};
var _atob = global.atob ? function (a) {
return global.atob(a);
} : function (a) {
return a.replace(/\S{,}/g, cb_decode);
};
var atob = function (a) {
return _atob(String(a).replace(/[^A-Za-z0-\+\/]/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-\+\/]/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 % ) != )
{
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 == -)
{
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("的名片") > -)
{
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 == )
{
Authority = "www." + Authority;
}
int index = Authority.IndexOf('.', );
domain = Authority.Substring(index + , Authority.Length - index - )
.Replace("comhttp", "com");
subDomain = Authority.Replace("comhttp", "com");
if (ss.Length < )
{
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 == -)
{
baseUrl = url;
return;
}
baseUrl = url.Substring(, questionMarkIndex);
if (questionMarkIndex == url.Length - )
return;
string ps = url.Substring(questionMarkIndex + );
// 开始分析参数对
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
}

最新文章

  1. oracel数据导出导入
  2. Django1.3 创建项目
  3. Linux的学习--使用PuTTY
  4. [转] C语言常见笔试题大全1
  5. CGOS461 [网络流24题] 餐巾(最小费用最大流)
  6. TabControl控件中TabPage的显示和隐藏
  7. shell学习笔记
  8. 简单makefile的写法
  9. 获取系统的emoji表情定制键盘
  10. POJ 3415 Max Sum of Max-K-sub-sequence (线段树+dp思想)
  11. 软件工程期末考试 AHNU
  12. Winform远程更新代码
  13. Sublime 安装、插件CoolFormat
  14. 用ASP.NET Core 2.0 建立规范的 REST API -- GET 和 POST
  15. 漫谈hashcode
  16. 使用idea配置tomcat将web项目跑起来
  17. [Spark][Python][DataFrame][RDD]从DataFrame得到RDD的例子
  18. Elasticsearch 性能监控基础【转】
  19. Python爬虫爬取贴吧的帖子内容
  20. android读取大图片并缓存

热门文章

  1. 【NOIP2016提高A组8.11】自然数
  2. 命令——tree
  3. 利用Pandas和matplotlib分析我爱我家房租区间频率
  4. Oracle 与 ODAC 一起安装
  5. activeMQ安全机制
  6. [CF1082G]Petya and Graph:最小割
  7. [BZOJ4205][FJ2015集训]卡牌配对
  8. 回望2017,基于深度学习的NLP研究大盘点
  9. functional-page-navigator 组件
  10. ORA-00346,借助_allow_resetlogs_corruption开库