JavaScript关于sha1加密
- function encodeUTF8(s) {
- var i, r = [], c, x;
- for (i = 0; i < s.length; i++)
- if ((c = s.charCodeAt(i)) < 0x80) r.push(c);
- else if (c < 0x800) r.push(0xC0 + (c >> 6 & 0x1F), 0x80 + (c & 0x3F));
- else {
- if ((x = c ^ 0xD800) >> 10 == 0) //对四字节UTF-16转换为Unicode
- c = (x << 10) + (s.charCodeAt(++i) ^ 0xDC00) + 0x10000,
- r.push(0xF0 + (c >> 18 & 0x7), 0x80 + (c >> 12 & 0x3F));
- else r.push(0xE0 + (c >> 12 & 0xF));
- r.push(0x80 + (c >> 6 & 0x3F), 0x80 + (c & 0x3F));
- };
- return r;
- }
- // 字符串加密成 hex 字符串
- function sha1(s) {
- var data = new Uint8Array(encodeUTF8(s))
- var i, j, t;
- var l = ((data.length + 8) >>> 6 << 4) + 16, s = new Uint8Array(l << 2);
- s.set(new Uint8Array(data.buffer)), s = new Uint32Array(s.buffer);
- for (t = new DataView(s.buffer), i = 0; i < l; i++)s[i] = t.getUint32(i << 2);
- s[data.length >> 2] |= 0x80 << (24 - (data.length & 3) * 8);
- s[l - 1] = data.length << 3;
- var w = [], f = [
- function () { return m[1] & m[2] | ~m[1] & m[3]; },
- function () { return m[1] ^ m[2] ^ m[3]; },
- function () { return m[1] & m[2] | m[1] & m[3] | m[2] & m[3]; },
- function () { return m[1] ^ m[2] ^ m[3]; }
- ], rol = function (n, c) { return n << c | n >>> (32 - c); },
- k = [1518500249, 1859775393, -1894007588, -899497514],
- m = [1732584193, -271733879, null, null, -1009589776];
- m[2] = ~m[0], m[3] = ~m[1];
- for (i = 0; i < s.length; i += 16) {
- var o = m.slice(0);
- for (j = 0; j < 80; j++)
- w[j] = j < 16 ? s[i + j] : rol(w[j - 3] ^ w[j - 8] ^ w[j - 14] ^ w[j - 16], 1),
- t = rol(m[0], 5) + f[j / 20 | 0]() + m[4] + w[j] + k[j / 20 | 0] | 0,
- m[1] = rol(m[1], 30), m.pop(), m.unshift(t);
- for (j = 0; j < 5; j++)m[j] = m[j] + o[j] | 0;
- };
- t = new DataView(new Uint32Array(m).buffer);
- for (var i = 0; i < 5; i++)m[i] = t.getUint32(i << 2);
- var hex = Array.prototype.map.call(new Uint8Array(new Uint32Array(m).buffer), function (e) {
- return (e < 16 ? "0" : "") + e.toString(16);
- }).join("");
- return hex;
- }
JavaScript关于sha1加密的更多相关文章
- asp下sha1加密函数
sha1.asp文件 <script language="javascript" type="text/javascript" runat="s ...
- js的常见的三种密码加密方式-MD5加密、Base64加密和解密和sha1加密详解总结
写前端的时候,很多的时候是避免不了注册这一关的,但是一般的注册是没有任何的难度的,无非就是一些简单的获取用户输入的数据,然后进行简单的校验以后调用接口,将数据发送到后端,完成一个简单的注册的流程,那么 ...
- javascript用户密码加密,js密码加密
1.base64加密 在页面中引入base64.js文件,调用方法为: <!DOCTYPE HTML> <html> <head> <meta charset ...
- JS实现的base64加密、md5加密及sha1加密详解
1.base64加密 在页面中引入base64.js文件,调用方法为: <!DOCTYPE HTML> <html> <head> <meta charset ...
- js实现md5加密sha1加密等
1.base64加密 在页面中引入base64.js文件,调用方法为: <!DOCTYPE HTML> <html> <head> <meta charset ...
- c# 生成SHA1加密字符串
从网上找到的一种加密代码: var enstr ="abcdefg"; var strRes = Encoding.Default.GetBytes(enstr); HashAlg ...
- iOS SHA1加密实现方法
使用方法 先导入头文件 #import "SHA1.h" //SHA1测试 NSString* sh1=[SHA1 getSha1String:"]; NSLog(@&q ...
- SHA-1加密
/** * SHA-1加密 * @param strSrc 要加密的字符串 * @return 加密后的字符串 */ public static String SHAEncrypt(String st ...
- oc ios 中文字符串 进行 sha1加密 错误?
我在网上找到了一个oc版加密的工具类,但是加密中文就出现大问题 const char *cstr = [self cStringUsingEncoding:encoding]; NSData *dat ...
随机推荐
- docker镜像的使用及相关
参考网站docker中文网:http://www.docker.org.cn/book/docker/docker-push-image-13.html 1.搜索容器: docker search t ...
- LabVIEW--好书推荐与分享
LabVIEW宝典 此书可以作为工具书,配合LabVIEW的范例程序学习可以达到事半功倍的效果. 链接:https://pan.baidu.com/s/17jm6PznLyGW8rVQ_veaGCg ...
- 【原创】大数据基础之Zookeeper(2)源代码解析
核心枚举 public enum ServerState { LOOKING, FOLLOWING, LEADING, OBSERVING; } zookeeper服务器状态:刚启动LOOKING,f ...
- jQuery选择器 :eq() 不能识别变量参数的问题解决方案
问题: js语法中,引号内变量会直接解释为字符串,因此使用:eq()时参数将被识别为字符串而不是变量指代的内容 如下错误写法: $(".circle span:eq(count-1)&quo ...
- bzoj 3277
十分之恶心的后缀自动机 (其实是水题,但是我太弱了...) 首先,有一个预备知识:bzoj 2780https://blog.csdn.net/lleozhang/article/details/89 ...
- 分布式版本控制系统-git
Git是目前世界上最先进的分布式版本控制系统 SVN是集中式的版本控制系统,而Git是分布式版本控制系统,集中式和分布式版本控制系统有什么区别呢?这个可以找度娘...... 1.安装Git yum i ...
- 一次lr异常Error: C interpreter run time error: Action.c (17): Error -- memory violation : Exception ACCESS_VIOLATION received问题分析
今天qq群里人问我一个问题 人家的原始问题如下: 问题是为啥通过lr_save_string取不到参数值 由于别的问题,我也需要调试,但是没有环境,只能模拟场景,如下 他想将token变量换成lr中的 ...
- celery使用
1.常用命令 (1)启动后台职程 celery worker -A tasks --loglevel=info celery worker -A tasks --loglevel= -A 是指cele ...
- 一道简单的dp题 --- Greenhouse Effect CodeForces - 269B
题目链接: https://vjudge.net/problem/36696/origin 题目大意: 要求从1到m升序排列,点可以随意移动,问最少需要移动多少次, 思路: 动态规划 可以推出转移方程 ...
- JZOJ5431 捕老鼠
JZOJ 5341 Description 为了加快社会主义现代化,建设新农村,农夫约(Farmer Jo)决定给农庄里的仓库灭灭鼠.于是,猫被农夫约派去捕老鼠. 猫虽然擅长捕老鼠,但是老鼠们太健美了 ...