base64 数据加密
1.新建一个base64.js文件 添加下面的代码
/* Copyright (C) 1999 Masanao Izumo <iz@onicos.co.jp>
* Version: 1.0
* LastModified: Dec 25 1999
* This library is free. You can redistribute it and/or modify it.
*/ /*
* Interfaces:
* b64 = base64encode(data);
* data = base64decode(b64);
*/ var base64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
var base64DecodeChars = new Array(-, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, , -, -, -, ,
, , , , , , , , , , -, -, -, -, -, -, -, , , , , , , , , , , , , , , ,
, , , , , , , , , , , -, -, -, -, -, -, , , , , , , , , , , , , , , ,
, , , , , , , , , , , -, -, -, -, -); function base64encode(str) {
var out, i, len;
var c1, c2, c3; len = str.length;
i = ;
out = "";
while (i < len) {
c1 = str.charCodeAt(i++) & 0xff;
if (i == len) {
out += base64EncodeChars.charAt(c1 >> );
out += base64EncodeChars.charAt((c1 & 0x3) << );
out += "==";
break;
}
c2 = str.charCodeAt(i++);
if (i == len) {
out += base64EncodeChars.charAt(c1 >> );
out += base64EncodeChars.charAt(((c1 & 0x3) << ) | ((c2 & 0xF0) >> ));
out += base64EncodeChars.charAt((c2 & 0xF) << );
out += "=";
break;
}
c3 = str.charCodeAt(i++);
out += base64EncodeChars.charAt(c1 >> );
out += base64EncodeChars.charAt(((c1 & 0x3) << ) | ((c2 & 0xF0) >> ));
out += base64EncodeChars.charAt(((c2 & 0xF) << ) | ((c3 & 0xC0) >> ));
out += base64EncodeChars.charAt(c3 & 0x3F);
}
return out;
} function base64decode(str) {
var c1, c2, c3, c4;
var i, len, out; len = str.length;
i = ;
out = "";
while (i < len) {
/* c1 */
do {
c1 = base64DecodeChars[str.charCodeAt(i++) & 0xff];
} while (i < len && c1 == -);
if (c1 == -)
break; /* c2 */
do {
c2 = base64DecodeChars[str.charCodeAt(i++) & 0xff];
} while (i < len && c2 == -);
if (c2 == -)
break; out += String.fromCharCode((c1 << ) | ((c2 & 0x30) >> )); /* c3 */
do {
c3 = str.charCodeAt(i++) & 0xff;
if (c3 == )
return out;
c3 = base64DecodeChars[c3];
} while (i < len && c3 == -);
if (c3 == -)
break; out += String.fromCharCode(((c2 & 0XF) << ) | ((c3 & 0x3C) >> )); /* c4 */
do {
c4 = str.charCodeAt(i++) & 0xff;
if (c4 == )
return out;
c4 = base64DecodeChars[c4];
} while (i < len && c4 == -);
if (c4 == -)
break;
out += String.fromCharCode(((c3 & 0x03) << ) | c4);
}
return out;
}
上面代码中的base64encode()用于编码,base64decode()用于解码。
2.在前段导入 base64.js文件
<script type="text/javascript" src="md5/base64.js"></script>
3.加密
function aa(){
sEncoded=base64encode("aa");
alert(sEncoded)
}
4.解密
function bb(){
sDecoded=base64decode("YWE=");
alert(sDecoded)
}
5.对utf-8字符进行编码要这样写:
sEncoded=base64encode(utf16to8(str));
然后,解码要这样写:
sDecoded=utf8to16(base64decode(sEncoded))
参考文献:
http://www.ruanyifeng.com/blog/2008/06/base64.html
测试
https://jsfiddle.net/gabrieleromanato/qAGHT/
base64 数据加密的更多相关文章
- Python之数据加密与解密及相关操作(hashlib模块、hmac模块、random模块、base64模块、pycrypto模块)
本文内容 数据加密概述 Python中实现数据加密的模块简介 hashlib与hmac模块介绍 random与secrets模块介绍 base64模块介绍 pycrypto模块介绍 总结 参考文档 提 ...
- Python之数据加密与解密及相关操作(hashlib、hmac、random、base64、pycrypto)
本文内容 数据加密概述 Python中实现数据加密的模块简介 hashlib与hmac模块介绍 random与secrets模块介绍 base64模块介绍 pycrypto模块介绍 总结 参考文档 提 ...
- Android数据加密之Base64编码算法
前言: 前面学习总结了平时开发中遇见的各种数据加密方式,最终都会对加密后的二进制数据进行Base64编码,起到一种二次加密的效果,其实呢Base64从严格意义上来说的话不是一种加密算法,而是一种编码算 ...
- Android数据加密之异或加密算法
前言: 这几天被公司临时拉到去做Android IM即时通信协议实现,大致看了下他们定的协议,由于之前没有参与,据说因服务器性能限制,只达成非明文传递,具体原因我不太清楚,不过这里用的加密方式是采用异 ...
- Android数据加密之SHA安全散列算法
前言: 对于SHA安全散列算法,以前没怎么使用过,仅仅是停留在听说过的阶段,今天在看图片缓存框架Glide源码时发现其缓存的Key采用的不是MD5加密算法,而是SHA-256加密算法,这才勾起了我的好 ...
- Android数据加密之MD5加密
前言: 项目中无论是密码的存储或者说判断文件是否是同一文件,都会用到MD5算法,今天来总结一下MD5加密算法. 什么是MD5加密? MD5英文全称“Message-Digest Algorithm 5 ...
- Android数据加密之Rsa加密
前言: 最近无意中和同事交流数据安全传输的问题,想起自己曾经使用过的Rsa非对称加密算法,闲下来总结一下. 其他几种加密方式: Android数据加密之Rsa加密 Android数据加密之Aes加密 ...
- Android数据加密之Aes加密
前言: 项目中除了登陆,支付等接口采用rsa非对称加密,之外的采用aes对称加密,今天我们来认识一下aes加密. 其他几种加密方式: Android数据加密之Rsa加密 Android数据加密之Aes ...
- Android数据加密之Des加密
前言: 端午节前有个同事咨询我有关Android DES加密的相关实现,简单的实现了一下,今天来总结一下. 其他几种加密方式: Android数据加密之Rsa加密 Android数据加密之Aes加密 ...
随机推荐
- swift 全局常量 && 全局变量的写法
在OC里面 如果 想设置一个全局常量 很简单 使用简单宏定义 就搞定了 例如: #define WEBAPIBASEURL @"http://www.baidu.com/" ...
- 通过socket和Udp协议简单实现一个群体聊天工具(控制台)
编写一个聊天程序.有收数据的部分 和 发数据的部分.这两个部分需要同时执行,这就用到多线程技术,一个线程负责收,一个现象负责发. 因为收和发动作是不一致的,所以要定义两个run方法而且这两个方法要封装 ...
- mysql表数据压缩
记得一次面试中,面试官问我是否知道表的压缩,这个时候我才知道mysql有个表压缩这么个功能,今天试用下看看表的压缩率怎么样. 这里分两个部分说明,第一部分:官方文档说明:第二部分:具体实例测试. [第 ...
- poj 1419Graph Coloring 【dfs+补图+计算最大团+计算最大独立集 【模板】】
题目地址:http://poj.org/problem?id=1419 Graph Coloring Time Limit: 1000MS Memory Limit: 10000K Total S ...
- mac活动监视器闪退
输入:rm -rf ~/Library/LaunchAgents/com.apple.Yahoo.plist即可!
- EntityFramework 学习 一 枚举
1. Convert an existing property to Enum: using (var ctx = new SchoolDBEntities()) { Teacher tchr = n ...
- json-lib简单处理json和对json的简单介绍
JSON 1.json是什么? *它是js提供的一种数据交换格式 2.json的语法 *{}:是对象! >属性名必须使用双引号括起来!单引号不行!!! >属性值: *null *数值 *数 ...
- 【leetcode刷题笔记】ZigZag Conversion
The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like ...
- 关于解决SSHD 连接 认证失败的问题
网上找有很多方法,有时候情况不一样 ,也不实用 其实找到解决问题的思路更总要 首先分析日志文件 less /var/log/secure | grep sshd ,看具体出现什么问题 然后再去搜索相关 ...
- TypeError: 'str' object is not callable
Python报错TypeError: 'str' object is not callable