miaofuhao лет назад: 4
Родитель
Сommit
1612744c45

Разница между файлами не показана из-за своего большого размера
+ 6059 - 0
web/YTSoft.BaseCallCenter.MVCWeb/Content/js/aes/crypto-js.js


+ 229 - 0
web/YTSoft.BaseCallCenter.MVCWeb/Content/js/jquery.md5.js

@@ -0,0 +1,229 @@
1
+	/**
2
+	 * jQuery MD5 hash algorithm function
3
+	 * 
4
+	 * 	<code>
5
+	 * 		Calculate the md5 hash of a String 
6
+	 * 		String $.md5 ( String str )
7
+	 * 	</code>
8
+	 * 
9
+	 * Calculates the MD5 hash of str using the » RSA Data Security, Inc. MD5 Message-Digest Algorithm, and returns that hash. 
10
+	 * MD5 (Message-Digest algorithm 5) is a widely-used cryptographic hash function with a 128-bit hash value. MD5 has been employed in a wide variety of security applications, and is also commonly used to check the integrity of data. The generated hash is also non-reversable. Data cannot be retrieved from the message digest, the digest uniquely identifies the data.
11
+	 * MD5 was developed by Professor Ronald L. Rivest in 1994. Its 128 bit (16 byte) message digest makes it a faster implementation than SHA-1.
12
+	 * This script is used to process a variable length message into a fixed-length output of 128 bits using the MD5 algorithm. It is fully compatible with UTF-8 encoding. It is very useful when u want to transfer encrypted passwords over the internet. If you plan using UTF-8 encoding in your project don't forget to set the page encoding to UTF-8 (Content-Type meta tag). 
13
+	 * This function orginally get from the WebToolkit and rewrite for using as the jQuery plugin.
14
+	 * 
15
+	 * Example
16
+	 * 	Code
17
+	 * 		<code>
18
+	 * 			$.md5("I'm Persian."); 
19
+	 * 		</code>
20
+	 * 	Result
21
+	 * 		<code>
22
+	 * 			"b8c901d0f02223f9761016cfff9d68df"
23
+	 * 		</code>
24
+	 * 
25
+	 * @alias Muhammad Hussein Fattahizadeh < muhammad [AT] semnanweb [DOT] com >
26
+	 * @link http://www.semnanweb.com/jquery-plugin/md5.html
27
+	 * @see http://www.webtoolkit.info/
28
+	 * @license http://www.gnu.org/licenses/gpl.html [GNU General Public License]
29
+	 * @param {jQuery} {md5:function(string))
30
+	 * @return string
31
+	 */
32
+	
33
+	(function($){
34
+		
35
+		var rotateLeft = function(lValue, iShiftBits) {
36
+			return (lValue << iShiftBits) | (lValue >>> (32 - iShiftBits));
37
+		}
38
+		
39
+		var addUnsigned = function(lX, lY) {
40
+			var lX4, lY4, lX8, lY8, lResult;
41
+			lX8 = (lX & 0x80000000);
42
+			lY8 = (lY & 0x80000000);
43
+			lX4 = (lX & 0x40000000);
44
+			lY4 = (lY & 0x40000000);
45
+			lResult = (lX & 0x3FFFFFFF) + (lY & 0x3FFFFFFF);
46
+			if (lX4 & lY4) return (lResult ^ 0x80000000 ^ lX8 ^ lY8);
47
+			if (lX4 | lY4) {
48
+				if (lResult & 0x40000000) return (lResult ^ 0xC0000000 ^ lX8 ^ lY8);
49
+				else return (lResult ^ 0x40000000 ^ lX8 ^ lY8);
50
+			} else {
51
+				return (lResult ^ lX8 ^ lY8);
52
+			}
53
+		}
54
+		
55
+		var F = function(x, y, z) {
56
+			return (x & y) | ((~ x) & z);
57
+		}
58
+		
59
+		var G = function(x, y, z) {
60
+			return (x & z) | (y & (~ z));
61
+		}
62
+		
63
+		var H = function(x, y, z) {
64
+			return (x ^ y ^ z);
65
+		}
66
+		
67
+		var I = function(x, y, z) {
68
+			return (y ^ (x | (~ z)));
69
+		}
70
+		
71
+		var FF = function(a, b, c, d, x, s, ac) {
72
+			a = addUnsigned(a, addUnsigned(addUnsigned(F(b, c, d), x), ac));
73
+			return addUnsigned(rotateLeft(a, s), b);
74
+		};
75
+		
76
+		var GG = function(a, b, c, d, x, s, ac) {
77
+			a = addUnsigned(a, addUnsigned(addUnsigned(G(b, c, d), x), ac));
78
+			return addUnsigned(rotateLeft(a, s), b);
79
+		};
80
+		
81
+		var HH = function(a, b, c, d, x, s, ac) {
82
+			a = addUnsigned(a, addUnsigned(addUnsigned(H(b, c, d), x), ac));
83
+			return addUnsigned(rotateLeft(a, s), b);
84
+		};
85
+		
86
+		var II = function(a, b, c, d, x, s, ac) {
87
+			a = addUnsigned(a, addUnsigned(addUnsigned(I(b, c, d), x), ac));
88
+			return addUnsigned(rotateLeft(a, s), b);
89
+		};
90
+		
91
+		var convertToWordArray = function(string) {
92
+			var lWordCount;
93
+			var lMessageLength = string.length;
94
+			var lNumberOfWordsTempOne = lMessageLength + 8;
95
+			var lNumberOfWordsTempTwo = (lNumberOfWordsTempOne - (lNumberOfWordsTempOne % 64)) / 64;
96
+			var lNumberOfWords = (lNumberOfWordsTempTwo + 1) * 16;
97
+			var lWordArray = Array(lNumberOfWords - 1);
98
+			var lBytePosition = 0;
99
+			var lByteCount = 0;
100
+			while (lByteCount < lMessageLength) {
101
+				lWordCount = (lByteCount - (lByteCount % 4)) / 4;
102
+				lBytePosition = (lByteCount % 4) * 8;
103
+				lWordArray[lWordCount] = (lWordArray[lWordCount] | (string.charCodeAt(lByteCount) << lBytePosition));
104
+				lByteCount++;
105
+			}
106
+			lWordCount = (lByteCount - (lByteCount % 4)) / 4;
107
+			lBytePosition = (lByteCount % 4) * 8;
108
+			lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80 << lBytePosition);
109
+			lWordArray[lNumberOfWords - 2] = lMessageLength << 3;
110
+			lWordArray[lNumberOfWords - 1] = lMessageLength >>> 29;
111
+			return lWordArray;
112
+		};
113
+		
114
+		var wordToHex = function(lValue) {
115
+			var WordToHexValue = "", WordToHexValueTemp = "", lByte, lCount;
116
+			for (lCount = 0; lCount <= 3; lCount++) {
117
+				lByte = (lValue >>> (lCount * 8)) & 255;
118
+				WordToHexValueTemp = "0" + lByte.toString(16);
119
+				WordToHexValue = WordToHexValue + WordToHexValueTemp.substr(WordToHexValueTemp.length - 2, 2);
120
+			}
121
+			return WordToHexValue;
122
+		};
123
+		
124
+		var uTF8Encode = function(string) {
125
+			string = string.replace(/\x0d\x0a/g, "\x0a");
126
+			var output = "";
127
+			for (var n = 0; n < string.length; n++) {
128
+				var c = string.charCodeAt(n);
129
+				if (c < 128) {
130
+					output += String.fromCharCode(c);
131
+				} else if ((c > 127) && (c < 2048)) {
132
+					output += String.fromCharCode((c >> 6) | 192);
133
+					output += String.fromCharCode((c & 63) | 128);
134
+				} else {
135
+					output += String.fromCharCode((c >> 12) | 224);
136
+					output += String.fromCharCode(((c >> 6) & 63) | 128);
137
+					output += String.fromCharCode((c & 63) | 128);
138
+				}
139
+			}
140
+			return output;
141
+		};
142
+		
143
+		$.extend({
144
+			md5: function(string) {
145
+				var x = Array();
146
+				var k, AA, BB, CC, DD, a, b, c, d;
147
+				var S11=7, S12=12, S13=17, S14=22;
148
+				var S21=5, S22=9 , S23=14, S24=20;
149
+				var S31=4, S32=11, S33=16, S34=23;
150
+				var S41=6, S42=10, S43=15, S44=21;
151
+				string = uTF8Encode(string);
152
+				x = convertToWordArray(string);
153
+				a = 0x67452301; b = 0xEFCDAB89; c = 0x98BADCFE; d = 0x10325476;
154
+				for (k = 0; k < x.length; k += 16) {
155
+					AA = a; BB = b; CC = c; DD = d;
156
+					a = FF(a, b, c, d, x[k+0],  S11, 0xD76AA478);
157
+					d = FF(d, a, b, c, x[k+1],  S12, 0xE8C7B756);
158
+					c = FF(c, d, a, b, x[k+2],  S13, 0x242070DB);
159
+					b = FF(b, c, d, a, x[k+3],  S14, 0xC1BDCEEE);
160
+					a = FF(a, b, c, d, x[k+4],  S11, 0xF57C0FAF);
161
+					d = FF(d, a, b, c, x[k+5],  S12, 0x4787C62A);
162
+					c = FF(c, d, a, b, x[k+6],  S13, 0xA8304613);
163
+					b = FF(b, c, d, a, x[k+7],  S14, 0xFD469501);
164
+					a = FF(a, b, c, d, x[k+8],  S11, 0x698098D8);
165
+					d = FF(d, a, b, c, x[k+9],  S12, 0x8B44F7AF);
166
+					c = FF(c, d, a, b, x[k+10], S13, 0xFFFF5BB1);
167
+					b = FF(b, c, d, a, x[k+11], S14, 0x895CD7BE);
168
+					a = FF(a, b, c, d, x[k+12], S11, 0x6B901122);
169
+					d = FF(d, a, b, c, x[k+13], S12, 0xFD987193);
170
+					c = FF(c, d, a, b, x[k+14], S13, 0xA679438E);
171
+					b = FF(b, c, d, a, x[k+15], S14, 0x49B40821);
172
+					a = GG(a, b, c, d, x[k+1],  S21, 0xF61E2562);
173
+					d = GG(d, a, b, c, x[k+6],  S22, 0xC040B340);
174
+					c = GG(c, d, a, b, x[k+11], S23, 0x265E5A51);
175
+					b = GG(b, c, d, a, x[k+0],  S24, 0xE9B6C7AA);
176
+					a = GG(a, b, c, d, x[k+5],  S21, 0xD62F105D);
177
+					d = GG(d, a, b, c, x[k+10], S22, 0x2441453);
178
+					c = GG(c, d, a, b, x[k+15], S23, 0xD8A1E681);
179
+					b = GG(b, c, d, a, x[k+4],  S24, 0xE7D3FBC8);
180
+					a = GG(a, b, c, d, x[k+9],  S21, 0x21E1CDE6);
181
+					d = GG(d, a, b, c, x[k+14], S22, 0xC33707D6);
182
+					c = GG(c, d, a, b, x[k+3],  S23, 0xF4D50D87);
183
+					b = GG(b, c, d, a, x[k+8],  S24, 0x455A14ED);
184
+					a = GG(a, b, c, d, x[k+13], S21, 0xA9E3E905);
185
+					d = GG(d, a, b, c, x[k+2],  S22, 0xFCEFA3F8);
186
+					c = GG(c, d, a, b, x[k+7],  S23, 0x676F02D9);
187
+					b = GG(b, c, d, a, x[k+12], S24, 0x8D2A4C8A);
188
+					a = HH(a, b, c, d, x[k+5],  S31, 0xFFFA3942);
189
+					d = HH(d, a, b, c, x[k+8],  S32, 0x8771F681);
190
+					c = HH(c, d, a, b, x[k+11], S33, 0x6D9D6122);
191
+					b = HH(b, c, d, a, x[k+14], S34, 0xFDE5380C);
192
+					a = HH(a, b, c, d, x[k+1],  S31, 0xA4BEEA44);
193
+					d = HH(d, a, b, c, x[k+4],  S32, 0x4BDECFA9);
194
+					c = HH(c, d, a, b, x[k+7],  S33, 0xF6BB4B60);
195
+					b = HH(b, c, d, a, x[k+10], S34, 0xBEBFBC70);
196
+					a = HH(a, b, c, d, x[k+13], S31, 0x289B7EC6);
197
+					d = HH(d, a, b, c, x[k+0],  S32, 0xEAA127FA);
198
+					c = HH(c, d, a, b, x[k+3],  S33, 0xD4EF3085);
199
+					b = HH(b, c, d, a, x[k+6],  S34, 0x4881D05);
200
+					a = HH(a, b, c, d, x[k+9],  S31, 0xD9D4D039);
201
+					d = HH(d, a, b, c, x[k+12], S32, 0xE6DB99E5);
202
+					c = HH(c, d, a, b, x[k+15], S33, 0x1FA27CF8);
203
+					b = HH(b, c, d, a, x[k+2],  S34, 0xC4AC5665);
204
+					a = II(a, b, c, d, x[k+0],  S41, 0xF4292244);
205
+					d = II(d, a, b, c, x[k+7],  S42, 0x432AFF97);
206
+					c = II(c, d, a, b, x[k+14], S43, 0xAB9423A7);
207
+					b = II(b, c, d, a, x[k+5],  S44, 0xFC93A039);
208
+					a = II(a, b, c, d, x[k+12], S41, 0x655B59C3);
209
+					d = II(d, a, b, c, x[k+3],  S42, 0x8F0CCC92);
210
+					c = II(c, d, a, b, x[k+10], S43, 0xFFEFF47D);
211
+					b = II(b, c, d, a, x[k+1],  S44, 0x85845DD1);
212
+					a = II(a, b, c, d, x[k+8],  S41, 0x6FA87E4F);
213
+					d = II(d, a, b, c, x[k+15], S42, 0xFE2CE6E0);
214
+					c = II(c, d, a, b, x[k+6],  S43, 0xA3014314);
215
+					b = II(b, c, d, a, x[k+13], S44, 0x4E0811A1);
216
+					a = II(a, b, c, d, x[k+4],  S41, 0xF7537E82);
217
+					d = II(d, a, b, c, x[k+11], S42, 0xBD3AF235);
218
+					c = II(c, d, a, b, x[k+2],  S43, 0x2AD7D2BB);
219
+					b = II(b, c, d, a, x[k+9],  S44, 0xEB86D391);
220
+					a = addUnsigned(a, AA);
221
+					b = addUnsigned(b, BB);
222
+					c = addUnsigned(c, CC);
223
+					d = addUnsigned(d, DD);
224
+				}
225
+				var tempValue = wordToHex(a) + wordToHex(b) + wordToHex(c) + wordToHex(d);
226
+				return tempValue.toLowerCase();
227
+			}
228
+		});
229
+	})(jQuery);

+ 33 - 0
web/YTSoft.BaseCallCenter.MVCWeb/Content/js/ytsoft.http.js

@@ -519,6 +519,39 @@ helper.DateFormat = {
519 519
         return NowDate;
520 520
     }
521 521
     ,
522
+    curentTime:function (){ 
523
+      var now = new Date();
524
+     
525
+      var year = now.getFullYear();       //年
526
+      var month = now.getMonth() + 1;     //月
527
+      var day = now.getDate();            //日
528
+     
529
+      var hh = now.getHours();            //时
530
+      var mm = now.getMinutes();          //分
531
+      var ss = now.getSeconds();          //秒
532
+     
533
+      var clock = year + "-";
534
+     
535
+      if(month < 10)
536
+          clock += "0";
537
+     
538
+      clock += month + "-";
539
+     
540
+      if(day < 10)
541
+          clock += "0";
542
+         
543
+      clock += day + " ";
544
+     
545
+      if(hh < 10)
546
+          clock += "0";
547
+         
548
+      clock += hh + ":";
549
+      if (mm < 10) clock += '0'; 
550
+      clock += mm + ":"; 
551
+      if (ss < 10) clock += '0'; 
552
+      clock += ss; 
553
+      return(clock); 
554
+  },
522 555
     getFirstDayInCurrentMonth: function () {
523 556
         var NowDate;
524 557
         var myDate = new Date();

+ 39 - 35
web/YTSoft.BaseCallCenter.MVCWeb/Views/Default/Login.cshtml

@@ -70,6 +70,8 @@
70 70
   <script src="~/Content/js/ytsoft.config.js"></script>
71 71
   <script src="~/Content/js/jquery-1.8.3.min.js"></script>
72 72
   <script src="~/Content/js/ytsoft.http.js"></script>
73
+  <script src="~/Content/js/jquery.md5.js"></script>
74
+	<script src="~/Content/js/aes/crypto-js.js"></script>
73 75
 
74 76
   <div class="layui-layer-move">
75 77
     <ul style="visibility: visible;" id="supersized" class="quality">
@@ -92,6 +94,10 @@
92 94
     </ul>
93 95
   </div>
94 96
   <script type="text/javascript">
97
+   $(document).ready(function () {
98
+      
99
+      
100
+    });
95 101
     //获取url中的参数
96 102
     function getUrlParam(name) {
97 103
       var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象
@@ -107,45 +113,43 @@
107 113
         if (getUrlParam("ExtPhone") != null) {
108 114
           extensionphone = getUrlParam("ExtPhone");
109 115
         } else {
110
-          var extensionphone = "";
116
+          var extensionphone = "1009";
111 117
         }
112
-        var password = document.getElementById("txtpassword").value; //todo,这里需加密
113
-        var params = "username=" + username + "&extensionphone=" + extensionphone + "&password=" + escape(password);
114 118
 
115
-        console.log(params)
119
+        var password = document.getElementById("txtpassword").value; //todo,这里需加密
120
+        var currenttime=helper.DateFormat.curentTime();
121
+        var datatime=currenttime.split(' ')[1].split(':').join('')
122
+        var key = CryptoJS.enc.Utf8.parse(")O[9d]6,YF}+efcaj{+8>Z'e9M"+datatime);
123
+        password = CryptoJS.enc.Utf8.parse($.md5(password));
124
+        var encrypted = CryptoJS.AES.encrypt(password, key, {mode:CryptoJS.mode.ECB,padding: CryptoJS.pad.Pkcs7});
125
+        console.log(encrypted.toString())
126
+        var params = "username=" + username + "&extensionphone=" + extensionphone + "&password=" + encrypted.toString()+ "&logintime=" +currenttime.replace(/ /g, "%20");
116 127
         debugger
117
-        $.post("/Default/LoginIn/?" + params, function (data, states) {
118
-          if (states == "success") {
119
-            //if (data.length > 10) {
120
-            //    var newdata = data.substr(0, 10);
121
-            //if (newdata == "firstlogin") {
122
-            //    $.ligerDialog.open({
123
-            //        url: 'firstlogin.aspx?ResetPass=' + data.substr(10, data.length - 10),
124
-            //        title: '修改初始密码',
125
-            //        height: 400,
126
-            //        width: 500,
127
-            //        isResize: true
128
-            //    });
129
-            //}
130
-            //else {
131
-            //lblTip.innerHTML = "登录失败,用户名密码错误或数据库连接异常";
132
-            //document.getElementById("txtUserPwd").focus();
133
-            //WriteFileLogs(3, "login.aspx", data);
134
-            //}
135
-            //}
136
-            //else {
137
-            if (data == "success") {
138
-              location.href = "/Main/Index";
139
-              helper.cookies.set('callState', 1);
140
-              helper.cookies.set('clsCookie', "");
141
-            }
142
-            else {
143
-              lblTip.innerHTML = "登录失败,用户名密码错误或数据库连接异常";
144
-              document.getElementById("txtpassword").focus();
128
+        $.ajax({
129
+            type: "post",
130
+            url: "/Default/LoginIn",
131
+            dataType: 'text',
132
+            async: true,
133
+            data: {
134
+              username: username,
135
+              extensionphone:extensionphone,
136
+              password:encrypted.toString(),
137
+              logintime:currenttime
138
+            },
139
+            success: function(data) {
140
+              /*验证请求*/
141
+              if (data == "success") {
142
+                location.href = "/Main/Index";
143
+                helper.cookies.set('callState', 1);
144
+                helper.cookies.set('clsCookie', "");
145
+              }
146
+              else {
147
+                lblTip.innerHTML = "登录失败,用户名密码错误或数据库连接异常";
148
+                document.getElementById("txtpassword").focus();
149
+              }
150
+
145 151
             }
146
-            //}
147
-          }
148
-        })
152
+          });
149 153
       }
150 154
     }
151 155