1. function encodeUTF8(s) {
  2. var i, r = [], c, x;
  3. for (i = 0; i < s.length; i++)
  4. if ((c = s.charCodeAt(i)) < 0x80) r.push(c);
  5. else if (c < 0x800) r.push(0xC0 + (c >> 6 & 0x1F), 0x80 + (c & 0x3F));
  6. else {
  7. if ((x = c ^ 0xD800) >> 10 == 0) //对四字节UTF-16转换为Unicode
  8. c = (x << 10) + (s.charCodeAt(++i) ^ 0xDC00) + 0x10000,
  9. r.push(0xF0 + (c >> 18 & 0x7), 0x80 + (c >> 12 & 0x3F));
  10. else r.push(0xE0 + (c >> 12 & 0xF));
  11. r.push(0x80 + (c >> 6 & 0x3F), 0x80 + (c & 0x3F));
  12. };
  13. return r;
  14. }
  15.  
  16. // 字符串加密成 hex 字符串
  17. function sha1(s) {
  18. var data = new Uint8Array(encodeUTF8(s))
  19. var i, j, t;
  20. var l = ((data.length + 8) >>> 6 << 4) + 16, s = new Uint8Array(l << 2);
  21. s.set(new Uint8Array(data.buffer)), s = new Uint32Array(s.buffer);
  22. for (t = new DataView(s.buffer), i = 0; i < l; i++)s[i] = t.getUint32(i << 2);
  23. s[data.length >> 2] |= 0x80 << (24 - (data.length & 3) * 8);
  24. s[l - 1] = data.length << 3;
  25. var w = [], f = [
  26. function () { return m[1] & m[2] | ~m[1] & m[3]; },
  27. function () { return m[1] ^ m[2] ^ m[3]; },
  28. function () { return m[1] & m[2] | m[1] & m[3] | m[2] & m[3]; },
  29. function () { return m[1] ^ m[2] ^ m[3]; }
  30. ], rol = function (n, c) { return n << c | n >>> (32 - c); },
  31. k = [1518500249, 1859775393, -1894007588, -899497514],
  32. m = [1732584193, -271733879, null, null, -1009589776];
  33. m[2] = ~m[0], m[3] = ~m[1];
  34. for (i = 0; i < s.length; i += 16) {
  35. var o = m.slice(0);
  36. for (j = 0; j < 80; j++)
  37. w[j] = j < 16 ? s[i + j] : rol(w[j - 3] ^ w[j - 8] ^ w[j - 14] ^ w[j - 16], 1),
  38. t = rol(m[0], 5) + f[j / 20 | 0]() + m[4] + w[j] + k[j / 20 | 0] | 0,
  39. m[1] = rol(m[1], 30), m.pop(), m.unshift(t);
  40. for (j = 0; j < 5; j++)m[j] = m[j] + o[j] | 0;
  41. };
  42. t = new DataView(new Uint32Array(m).buffer);
  43. for (var i = 0; i < 5; i++)m[i] = t.getUint32(i << 2);
  44.  
  45. var hex = Array.prototype.map.call(new Uint8Array(new Uint32Array(m).buffer), function (e) {
  46. return (e < 16 ? "0" : "") + e.toString(16);
  47. }).join("");
  48. return hex;
  49. }

JavaScript关于sha1加密的更多相关文章

  1. asp下sha1加密函数

    sha1.asp文件 <script language="javascript" type="text/javascript" runat="s ...

  2. js的常见的三种密码加密方式-MD5加密、Base64加密和解密和sha1加密详解总结

    写前端的时候,很多的时候是避免不了注册这一关的,但是一般的注册是没有任何的难度的,无非就是一些简单的获取用户输入的数据,然后进行简单的校验以后调用接口,将数据发送到后端,完成一个简单的注册的流程,那么 ...

  3. javascript用户密码加密,js密码加密

    1.base64加密 在页面中引入base64.js文件,调用方法为: <!DOCTYPE HTML> <html> <head> <meta charset ...

  4. JS实现的base64加密、md5加密及sha1加密详解

    1.base64加密 在页面中引入base64.js文件,调用方法为: <!DOCTYPE HTML> <html> <head> <meta charset ...

  5. js实现md5加密sha1加密等

    1.base64加密 在页面中引入base64.js文件,调用方法为: <!DOCTYPE HTML> <html> <head> <meta charset ...

  6. c# 生成SHA1加密字符串

    从网上找到的一种加密代码: var enstr ="abcdefg"; var strRes = Encoding.Default.GetBytes(enstr); HashAlg ...

  7. iOS SHA1加密实现方法

    使用方法 先导入头文件 #import "SHA1.h" //SHA1测试 NSString* sh1=[SHA1 getSha1String:"]; NSLog(@&q ...

  8. SHA-1加密

    /** * SHA-1加密 * @param strSrc 要加密的字符串 * @return 加密后的字符串 */ public static String SHAEncrypt(String st ...

  9. oc ios 中文字符串 进行 sha1加密 错误?

    我在网上找到了一个oc版加密的工具类,但是加密中文就出现大问题 const char *cstr = [self cStringUsingEncoding:encoding]; NSData *dat ...

随机推荐

  1. docker镜像的使用及相关

    参考网站docker中文网:http://www.docker.org.cn/book/docker/docker-push-image-13.html 1.搜索容器: docker search t ...

  2. LabVIEW--好书推荐与分享

    LabVIEW宝典 此书可以作为工具书,配合LabVIEW的范例程序学习可以达到事半功倍的效果. 链接:https://pan.baidu.com/s/17jm6PznLyGW8rVQ_veaGCg ...

  3. 【原创】大数据基础之Zookeeper(2)源代码解析

    核心枚举 public enum ServerState { LOOKING, FOLLOWING, LEADING, OBSERVING; } zookeeper服务器状态:刚启动LOOKING,f ...

  4. jQuery选择器 :eq() 不能识别变量参数的问题解决方案

    问题: js语法中,引号内变量会直接解释为字符串,因此使用:eq()时参数将被识别为字符串而不是变量指代的内容 如下错误写法: $(".circle span:eq(count-1)&quo ...

  5. bzoj 3277

    十分之恶心的后缀自动机 (其实是水题,但是我太弱了...) 首先,有一个预备知识:bzoj 2780https://blog.csdn.net/lleozhang/article/details/89 ...

  6. 分布式版本控制系统-git

    Git是目前世界上最先进的分布式版本控制系统 SVN是集中式的版本控制系统,而Git是分布式版本控制系统,集中式和分布式版本控制系统有什么区别呢?这个可以找度娘...... 1.安装Git yum i ...

  7. 一次lr异常Error: C interpreter run time error: Action.c (17): Error -- memory violation : Exception ACCESS_VIOLATION received问题分析

    今天qq群里人问我一个问题 人家的原始问题如下: 问题是为啥通过lr_save_string取不到参数值 由于别的问题,我也需要调试,但是没有环境,只能模拟场景,如下 他想将token变量换成lr中的 ...

  8. celery使用

    1.常用命令 (1)启动后台职程 celery worker -A tasks --loglevel=info celery worker -A tasks --loglevel= -A 是指cele ...

  9. 一道简单的dp题 --- Greenhouse Effect CodeForces - 269B

    题目链接: https://vjudge.net/problem/36696/origin 题目大意: 要求从1到m升序排列,点可以随意移动,问最少需要移动多少次, 思路: 动态规划 可以推出转移方程 ...

  10. JZOJ5431 捕老鼠

    JZOJ 5341 Description 为了加快社会主义现代化,建设新农村,农夫约(Farmer Jo)决定给农庄里的仓库灭灭鼠.于是,猫被农夫约派去捕老鼠. 猫虽然擅长捕老鼠,但是老鼠们太健美了 ...