写前端的时候,很多的时候是避免不了注册这一关的,但是一般的注册是没有任何的难度的,无非就是一些简单的获取用户输入的数据,然后进行简单的校验以后调用接口,将数据发送到后端,完成一个简单的注册的流程,那么一般来说,密码是不做加密的。但是也有一些数据库里面存放的是加密后的密码,这样有一个比较安全的地方在于,即使黑客将用户输入的文本密码得到了,也不知道具体是什么,因为密码是经过加密的。没有经过网络所以抓包不到。

今天就简单的将加密这块写一下,有可以用到的看一下。

js的加密没特别多的办法,常见的就三种, MD5加密、Base64加密和shal加密,那么今天就将这三种的用法写一下。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>sun api 签名</title>
<script src="./js/jquery.min.js"></script>
<script src="./js/md5.js"></script>
<script>
$(document).ready(function(){$("#btn_signature").click(function(){signature();});$("#btn_reset").click(function(){reset();});init();$("#btn_reset_time").click(function(){$("#timestamp").val( Math.floor((new Date().getTime())/1000));});
});
function init(){$("#v").val("1.0");
$("#timestamp").val( Math.floor((new Date().getTime())/1000));
};
function reset(){$("input").val("");$("#signatureDiv").html("");init();
};
function signature(){var body =$("#body").val();if(body.length>0){body=JSON.parse(body);body=JSON.stringify(body);}var sendData={};sendData.appId=$("#appId").val();sendData.timestamp=$("#timestamp").val();sendData.v=$("#v").val();sendData.body=body;var keyArray=Object.keys(sendData).sort();var signatureArray=[];for(i in keyArray){ signatureArray.push(keyArray[i]); signatureArray.push(":"); signatureArray.push(sendData[keyArray[i]]); }signatureArray.push($("#secret").val());
var str=signatureArray.join("");
var signatureStr = $.md5(str).toUpperCase();
console.log("排序后字符串参数:"+str);
console.log("签名结果:"+signatureStr);
$("#signatureDiv").html(signatureStr);
};
</script>
</head>
<body>
<div align="center" >
<table>
<tr>
<td>appId</td>
<td><input id="appId"/></td>
</tr>
<td>secret</td>
<td><input id="secret"/></td>
</tr>
<tr>
<td>timestamp</td>
<td><input id="timestamp"/></td>
</tr>
<tr>
<td>v</td>
<td><input id="v" /></td>
</tr>
<tr>
<td>body</td>
<td>
<textarea id="body" rows="20" cols="80" placeholder="无参不填">
</textarea></td>
</tr>
<tr>
<tr>
<td>签名结果</td>
<td><div id="signatureDiv"></div></td>
</tr>
<tr>
<td><button id="btn_signature">签名</button></td>
<td><button id="btn_reset_time">更新时间</button> &nbsp;&nbsp;&nbsp;<button id="btn_reset">重置</button></td>
</tr>
<table>
</div>
</body>
</html>

JS

(function($){var rotateLeft = function(lValue, iShiftBits) {return (lValue << iShiftBits) | (lValue >>> (32 - iShiftBits));}var addUnsigned = function(lX, lY) {var lX4, lY4, lX8, lY8, lResult;lX8 = (lX & 0x80000000);lY8 = (lY & 0x80000000);lX4 = (lX & 0x40000000);lY4 = (lY & 0x40000000);lResult = (lX & 0x3FFFFFFF) + (lY & 0x3FFFFFFF);if (lX4 & lY4) return (lResult ^ 0x80000000 ^ lX8 ^ lY8);if (lX4 | lY4) {if (lResult & 0x40000000) return (lResult ^ 0xC0000000 ^ lX8 ^ lY8);else return (lResult ^ 0x40000000 ^ lX8 ^ lY8);} else {return (lResult ^ lX8 ^ lY8);}}var F = function(x, y, z) {return (x & y) | ((~ x) & z);}var G = function(x, y, z) {return (x & z) | (y & (~ z));}var H = function(x, y, z) {return (x ^ y ^ z);}var I = function(x, y, z) {return (y ^ (x | (~ z)));}var FF = function(a, b, c, d, x, s, ac) {a = addUnsigned(a, addUnsigned(addUnsigned(F(b, c, d), x), ac));return addUnsigned(rotateLeft(a, s), b);};var GG = function(a, b, c, d, x, s, ac) {a = addUnsigned(a, addUnsigned(addUnsigned(G(b, c, d), x), ac));return addUnsigned(rotateLeft(a, s), b);};var HH = function(a, b, c, d, x, s, ac) {a = addUnsigned(a, addUnsigned(addUnsigned(H(b, c, d), x), ac));return addUnsigned(rotateLeft(a, s), b);};var II = function(a, b, c, d, x, s, ac) {a = addUnsigned(a, addUnsigned(addUnsigned(I(b, c, d), x), ac));return addUnsigned(rotateLeft(a, s), b);};var convertToWordArray = function(string) {var lWordCount;var lMessageLength = string.length;var lNumberOfWordsTempOne = lMessageLength + 8;var lNumberOfWordsTempTwo = (lNumberOfWordsTempOne - (lNumberOfWordsTempOne % 64)) / 64;var lNumberOfWords = (lNumberOfWordsTempTwo + 1) * 16;var lWordArray = Array(lNumberOfWords - 1);var lBytePosition = 0;var lByteCount = 0;while (lByteCount < lMessageLength) {lWordCount = (lByteCount - (lByteCount % 4)) / 4;lBytePosition = (lByteCount % 4) * 8;lWordArray[lWordCount] = (lWordArray[lWordCount] | (string.charCodeAt(lByteCount) << lBytePosition));lByteCount++;}lWordCount = (lByteCount - (lByteCount % 4)) / 4;lBytePosition = (lByteCount % 4) * 8;lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80 << lBytePosition);lWordArray[lNumberOfWords - 2] = lMessageLength << 3;lWordArray[lNumberOfWords - 1] = lMessageLength >>> 29;return lWordArray;};var wordToHex = function(lValue) {var WordToHexValue = "", WordToHexValueTemp = "", lByte, lCount;for (lCount = 0; lCount <= 3; lCount++) {lByte = (lValue >>> (lCount * 8)) & 255;WordToHexValueTemp = "0" + lByte.toString(16);WordToHexValue = WordToHexValue + WordToHexValueTemp.substr(WordToHexValueTemp.length - 2, 2);}return WordToHexValue;};var uTF8Encode = function(string) {string = string.replace(/\x0d\x0a/g, "\x0a");var output = "";for (var n = 0; n < string.length; n++) {var c = string.charCodeAt(n);if (c < 128) {output += String.fromCharCode(c);} else if ((c > 127) && (c < 2048)) {output += String.fromCharCode((c >> 6) | 192);output += String.fromCharCode((c & 63) | 128);} else {output += String.fromCharCode((c >> 12) | 224);output += String.fromCharCode(((c >> 6) & 63) | 128);output += String.fromCharCode((c & 63) | 128);}}return output;};$.extend({md5: function(string) {var x = Array();var k, AA, BB, CC, DD, a, b, c, d;var S11=7, S12=12, S13=17, S14=22;var S21=5, S22=9 , S23=14, S24=20;var S31=4, S32=11, S33=16, S34=23;var S41=6, S42=10, S43=15, S44=21;string = uTF8Encode(string);x = convertToWordArray(string);a = 0x67452301; b = 0xEFCDAB89; c = 0x98BADCFE; d = 0x10325476;for (k = 0; k < x.length; k += 16) {AA = a; BB = b; CC = c; DD = d;a = FF(a, b, c, d, x[k+0],  S11, 0xD76AA478);d = FF(d, a, b, c, x[k+1],  S12, 0xE8C7B756);c = FF(c, d, a, b, x[k+2],  S13, 0x242070DB);b = FF(b, c, d, a, x[k+3],  S14, 0xC1BDCEEE);a = FF(a, b, c, d, x[k+4],  S11, 0xF57C0FAF);d = FF(d, a, b, c, x[k+5],  S12, 0x4787C62A);c = FF(c, d, a, b, x[k+6],  S13, 0xA8304613);b = FF(b, c, d, a, x[k+7],  S14, 0xFD469501);a = FF(a, b, c, d, x[k+8],  S11, 0x698098D8);d = FF(d, a, b, c, x[k+9],  S12, 0x8B44F7AF);c = FF(c, d, a, b, x[k+10], S13, 0xFFFF5BB1);b = FF(b, c, d, a, x[k+11], S14, 0x895CD7BE);a = FF(a, b, c, d, x[k+12], S11, 0x6B901122);d = FF(d, a, b, c, x[k+13], S12, 0xFD987193);c = FF(c, d, a, b, x[k+14], S13, 0xA679438E);b = FF(b, c, d, a, x[k+15], S14, 0x49B40821);a = GG(a, b, c, d, x[k+1],  S21, 0xF61E2562);d = GG(d, a, b, c, x[k+6],  S22, 0xC040B340);c = GG(c, d, a, b, x[k+11], S23, 0x265E5A51);b = GG(b, c, d, a, x[k+0],  S24, 0xE9B6C7AA);a = GG(a, b, c, d, x[k+5],  S21, 0xD62F105D);d = GG(d, a, b, c, x[k+10], S22, 0x2441453);c = GG(c, d, a, b, x[k+15], S23, 0xD8A1E681);b = GG(b, c, d, a, x[k+4],  S24, 0xE7D3FBC8);a = GG(a, b, c, d, x[k+9],  S21, 0x21E1CDE6);d = GG(d, a, b, c, x[k+14], S22, 0xC33707D6);c = GG(c, d, a, b, x[k+3],  S23, 0xF4D50D87);b = GG(b, c, d, a, x[k+8],  S24, 0x455A14ED);a = GG(a, b, c, d, x[k+13], S21, 0xA9E3E905);d = GG(d, a, b, c, x[k+2],  S22, 0xFCEFA3F8);c = GG(c, d, a, b, x[k+7],  S23, 0x676F02D9);b = GG(b, c, d, a, x[k+12], S24, 0x8D2A4C8A);a = HH(a, b, c, d, x[k+5],  S31, 0xFFFA3942);d = HH(d, a, b, c, x[k+8],  S32, 0x8771F681);c = HH(c, d, a, b, x[k+11], S33, 0x6D9D6122);b = HH(b, c, d, a, x[k+14], S34, 0xFDE5380C);a = HH(a, b, c, d, x[k+1],  S31, 0xA4BEEA44);d = HH(d, a, b, c, x[k+4],  S32, 0x4BDECFA9);c = HH(c, d, a, b, x[k+7],  S33, 0xF6BB4B60);b = HH(b, c, d, a, x[k+10], S34, 0xBEBFBC70);a = HH(a, b, c, d, x[k+13], S31, 0x289B7EC6);d = HH(d, a, b, c, x[k+0],  S32, 0xEAA127FA);c = HH(c, d, a, b, x[k+3],  S33, 0xD4EF3085);b = HH(b, c, d, a, x[k+6],  S34, 0x4881D05);a = HH(a, b, c, d, x[k+9],  S31, 0xD9D4D039);d = HH(d, a, b, c, x[k+12], S32, 0xE6DB99E5);c = HH(c, d, a, b, x[k+15], S33, 0x1FA27CF8);b = HH(b, c, d, a, x[k+2],  S34, 0xC4AC5665);a = II(a, b, c, d, x[k+0],  S41, 0xF4292244);d = II(d, a, b, c, x[k+7],  S42, 0x432AFF97);c = II(c, d, a, b, x[k+14], S43, 0xAB9423A7);b = II(b, c, d, a, x[k+5],  S44, 0xFC93A039);a = II(a, b, c, d, x[k+12], S41, 0x655B59C3);d = II(d, a, b, c, x[k+3],  S42, 0x8F0CCC92);c = II(c, d, a, b, x[k+10], S43, 0xFFEFF47D);b = II(b, c, d, a, x[k+1],  S44, 0x85845DD1);a = II(a, b, c, d, x[k+8],  S41, 0x6FA87E4F);d = II(d, a, b, c, x[k+15], S42, 0xFE2CE6E0);c = II(c, d, a, b, x[k+6],  S43, 0xA3014314);b = II(b, c, d, a, x[k+13], S44, 0x4E0811A1);a = II(a, b, c, d, x[k+4],  S41, 0xF7537E82);d = II(d, a, b, c, x[k+11], S42, 0xBD3AF235);c = II(c, d, a, b, x[k+2],  S43, 0x2AD7D2BB);b = II(b, c, d, a, x[k+9],  S44, 0xEB86D391);a = addUnsigned(a, AA);b = addUnsigned(b, BB);c = addUnsigned(c, CC);d = addUnsigned(d, DD);}var tempValue = wordToHex(a) + wordToHex(b) + wordToHex(c) + wordToHex(d);return tempValue.toLowerCase();}});})(jQuery);

参考:https://blog.csdn.net/qq_41485414/article/details/80323023

js的常见的三种密码加密方式-MD5、Base64、sha1加密详解总结相关推荐

  1. 多角度对比数据中心常见的三种走线方式

    01 三种走线方式的施工图片 ▽下走线(地板下走线) ▽天花吊顶上走线 ▽机柜顶部走线 02 三种走线方式对比 通过上面的比较,毫无疑问,机柜顶部走线模式是最有优势的,给用户带来很多好处,包括维护方便 ...

  2. DDOS攻击器常见的三种DDoS攻击方式详解

    一流的攻击速度以及强大的隐蔽性能,使得DDOS集合了市面上所有攻击软件优点成为了最热的攻击方式.接下来本文将简单的介绍一下三种最为流行的DDOS攻击方式. SYN/ACK Flood攻击: 这种攻击方 ...

  3. oracle 表连接 大表小表_优化必备基础:Oracle中常见的三种表连接方式

    在Oracle SQL语句中,如果from后面有多个表时,表的连接方式是一个很重要的考量. 从Oracle 6开始,优化器就支持下面4种表连接方式: - 嵌套循环连接(Nested Loop Join ...

  4. flink 三种时间机制_Flink的时间与watermarks详解

    当我们在使用Flink的时候,避免不了要和时间(time).水位线(watermarks)打交道,理解这些概念是开发分布式流处理应用的基础.那么Flink支持哪些时间语义?Flink是如何处理乱序事件 ...

  5. 计算机无法使用光驱启动,电脑BIOS怎么设置光盘启动 三种类型BIOS设置光驱启动的图文详解教程...

    怎么设置电脑BIOS让电脑使用光盘启动呢?如何使用光盘安装电脑系统?BIOS怎么修改为光盘启动?本文将给大家介绍三种常见类型的BIOS的光盘启动设置方法,下面请看具体操作步骤. 主板BIOS类型主要有 ...

  6. MD5 base64 sha1 加密,解密

    Objective-c实现MD5和SHA1算法相对还是比较简单的,可以直接调用系统的C/C++共享库来实现调用 MD5即Message Digest Algorithm 5(信息-摘要算法 5),用于 ...

  7. 三种经典iPhone上网络抓包方法详解

    很多时候需要网络抓包分析,在iPhone上抓包稍有不同,下面介绍三种常用的方式.分析工具以wireshark为例. 一.最简单的方式:用PC作为热点,在PC上抓包 优点:简单: 缺点:不能抓真机2G/ ...

  8. dom操作获取盒子宽高位置的三种方法,offset/scroll/client三大家族使用详解(附源码及注释)

    结论:页面body的高度==视口的高度+滚动条滚动的距离. 这是一个恒等式,看完本篇博客,你将了解offset/scroll/clent三大事件获取宽高位置的具体含义,运用所学内容可以推导出这样的恒等 ...

  9. SPA优缺点、解决单页面应用的SEO困难问题以及三种网页渲染方式

    SPA特点优点缺点总结 1. 单页Web应用(SPA - Single Page web Application) 也就是说只有一个HTML文件的Web应用, 我们就称之为单页Web应用, 就称之为S ...

最新文章

  1. OpenCV error: Cannot load info library for OpenCV
  2. HTTPSConnectionPool(host=‘files.pythonhosted.org‘, port=443): Read timed out的解决方法
  3. 反流技术之IE插件技术研究
  4. Consumer设计-high/low Level Consumer
  5. mysql如何实现读提交锁_MySQL学习笔记(二)—MySQL事务及锁详解
  6. js 字符ascii码转换函数
  7. 使用GDB命令行调试器调试C/C++程序
  8. Linux进阶之路————scp指令介绍与演示
  9. 举例说明语言接触会造成哪些结果_语言学概论全真模拟演练(二)
  10. hdu 1133 Buy the Ticket(递推+精度精算)
  11. 学习记录 java泛型资料
  12. CAM365直播预告|带您全方位了解新一代CAM工具软件
  13. 小猪短租陈驰:共享经济不是简单的资本游戏
  14. SAP MM库存盘点流程
  15. php 图像边缘检测,科学网—图像处理边缘检测 - 李敏的博文
  16. 数学-排列组合的理解
  17. 【数据处理】xml的创建、读写问题
  18. ATOM基础教程一linter-php配置(12)
  19. html和css学习课件(新版)
  20. 家用监控摄像头意想不到的五条用途

热门文章

  1. linux 的vim快速查找内容
  2. 区块链网络性能的关键衡量指标
  3. iPhone手机在Apple启动logo处卡住,无法开机该怎么办?
  4. office2016、visio2016和project2016安装指针
  5. 倍投技巧 - 凯利公式教你如何用正确的方法投资
  6. 网易2016笔试(3)
  7. IP地址划分与子网掩码
  8. 根据imsi获取手机号归属地
  9. idea中文件提交不了svn怎么办
  10. 【DDOS 防御小建议】