JavaScript base64 加密解密
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>www.jb51.net aes.js</title>
</head> <body>
<script>
// Create Base64 Objectvar
Base64 = {
_keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
encode: function (e) {
var t = "";
var n, r, i, s, o, u, a;
var f = ;
e = Base64._utf8_encode(e);
while (f < e.length) {
n = e.charCodeAt(f++);
r = e.charCodeAt(f++);
i = e.charCodeAt(f++);
s = n >> ;
o = (n & ) << | r >> ;
u = (r & ) << | i >> ;
a = i & ;
if (isNaN(r)) {
u = a =
} else if (isNaN(i)) {
a =
}
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 = ;
e = e.replace(/[^A-Za-z0-+/=]/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 << | o >> ;
r = (o & ) << | u >> ;
i = (u & ) << | a;
t = t + String.fromCharCode(n);
if (u != ) {
t = t + String.fromCharCode(r)
}
if (a != ) {
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 = ; n < e.length; n++) {
var r = e.charCodeAt(n);
if (r < ) {
t += String.fromCharCode(r)
} else if (r > && r < ) {
t += String.fromCharCode(r >> | );
t += String.fromCharCode(r & | )
} else {
t += String.fromCharCode(r >> | );
t += String.fromCharCode(r >> & | );
t += String.fromCharCode(r & | )
}
}
return t
}, _utf8_decode: function (e) {
var t = "";
var n = ;
var r = c1 = c2 = ;
while (n < e.length) {
r = e.charCodeAt(n);
if (r < ) {
t += String.fromCharCode(r);
n++
} else if (r > && r < ) {
c2 = e.charCodeAt(n + );
t += String.fromCharCode((r & ) << | c2 & );
n +=
} else {
c2 = e.charCodeAt(n + );
c3 = e.charCodeAt(n + );
t += String.fromCharCode((r & ) << | (c2 & ) << | c3 & );
n +=
}
}
return t
}
} // Define the string
var string = 'Hello World!';
// Encode the String
var encodedString = Base64.encode(string);
console.log(encodedString); // Outputs: "SGVsbG8gV29ybGQh"
// Decode the String
var decodedString = Base64.decode(encodedString);
console.log(decodedString); // Outputs: "Hello World!" //这个自定义的Base64对象可以转码的字符也不仅限于Latin1字符;
var string = "Hello, ccccc!";
var encodedString = Base64.encode(string);//"SGVsbG8sIOS4reWbve+8gQ=="
console.log(encodedString);
var decodedString = Base64.decode(encodedString);
console.log(decodedString);
console.log("hahahhaha");
</script> </body>
</html>
使用python解密
>>> import base64
>>> base64.b64decode("SGVsbG8sIGNjY2Nj77yB").decode()
'Hello, ccccc!'
>>> base64.b64decode("SGVsbG8sIGNjY2Nj77yB").decode("utf-8")
'Hello, ccccc!'
参考:
https://www.cnblogs.com/songzhixue/p/11253243.html
https://www.cnblogs.com/chenglee/p/9037265.html
https://www.cnblogs.com/sunyuweb/p/9092367.html
JavaScript base64 加密解密的更多相关文章
- Javascript base64加密 解密
var base64encodechars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" ...
- Javascript Base64加密解密代码
<script language="javascript" runat="server"> var keyStr = "ABCDEFGHI ...
- JS实现base64加密解密
JS实现base64加密解密 转载自http://blog.csdn.net/fengzheng0306/archive/2006/04/25/676055.aspx 方法一: <HTML> ...
- django删除表重建&修改用户密码&base64加密解密字符串&ps aux参数说明&各种Error例子
1.django的queryset不支持负索引 AssertionError: Negative indexing is not supported. 2.django向前端JavaScript传递列 ...
- 【代码笔记】iOS-3DES+Base64加密解密
一,工程目录. 二,代码. RootViewController.m #import "RootViewController.h" #import "NSString+T ...
- 实现Base64加密解密
using System; using System.Text; namespace Common { /// <summary> /// 实现Base64加密解密 /// </ ...
- Java中使用BASE64加密&解密
package com.bao.tools.encryption; import java.io.IOException; import org.junit.Test; import sun.misc ...
- Base64加密解密原理以及代码实现(VC++)
Base64加密解密原理以及代码实现 转自:http://blog.csdn.net/jacky_dai/article/details/4698461 1. Base64使用A--Z,a--z,0- ...
- Java Base64 加密解密
使用JDK的类 BASE64Decoder BASE64Encoder package test; import sun.misc.BASE64Decoder; import sun.misc.BA ...
随机推荐
- MVC学习笔记(六)---遇到的小问题汇总
一.MVC中Controller中返回两个对象的写法如下: , msg = "成功", user = user, userInfo = person }); 二.前台向后台传入带有 ...
- spring整合MyBatis思路
目录 整合目标 需要的jar 整合思路 加入配置文件 整合目标 控制层采用springMVC.持久层使用mybatis实现. 需要的jar spring(包括springmvc) mybatis my ...
- 微信小程序分页加载列表
1.假设加载的数据为 2.wxml <view class="page"> <view class="page__bd"> <vi ...
- [转] Cache 和 Buffer的区别
程序员开发过程中经常会遇到“缓存”.“缓冲”等相似概念,之前没有特别关注,现在停下来做一下总结,才能更好地前行. 先来下枯燥的概念: 1.Cache:缓存区,是高速缓存,是位于CPU和主内存之间的容量 ...
- ISO模型学习
PDU:协议数据单元是指层次之间传递的数据单位 物理层PDU :PDU是数据位 bit数据链路层的PDU是数据帧frame网络层的PUD是数据包 packet传输层的PDU是数据段 segment其他 ...
- Java 虚拟机 - GC 垃圾回收机制分析
Java 垃圾回收(Garbage Collection,GC) Java支持内存动态分配.垃圾自动回收,而 C++ 不支持.我想这可能也是 为什么 Java 脱胎于 C++ 的一个原因吧. GC 的 ...
- java比较两个小数的大小
BigDecimal data1 = new BigDecimal("1");BigDecimal data2 = new BigDecimal("1.0"); ...
- 使用salt-stack指定IP添加系统用户为root的权限
指定多台要授权的用户,指定root权限 salt -L '192.168.3.212' cmd.run 'useradd fengniao -u 2000' salt -L '192.168.3.21 ...
- Ueditor 自动设置上传图片的宽度或高度
Uedior在上传图片的生活,需要自动设置上传图片的宽度或高度属性.该方法只能用于多图上传组件,单图上传无法使用. 该方法基于 ueditor 1.4.3 版本制作: 1.添加属性字段,在config ...
- XML炸弹
XML炸弹XML document type definition (DTD)可以定义entity,DTD可以出现在外部文件或文件内部.利用DTD可以产生XML炸弹,也就是能迅速占用大量内存的文件,如 ...