Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
youka-api
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
java-youka-wallet
youka-api
Commits
5b37019a
Commit
5b37019a
authored
May 17, 2018
by
Java-聂换换
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
微信分享h5注册页面
parent
487e8550
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
619 additions
and
97 deletions
+619
-97
style.css
src/main/webapp/static/share/css/style.css
+44
-0
DES.js
src/main/webapp/static/share/js/DES.js
+236
-0
getQueryStringByName.js
src/main/webapp/static/share/js/getQueryStringByName.js
+5
-0
regist.js
src/main/webapp/static/share/js/regist.js
+99
-59
sha1.js
src/main/webapp/static/share/js/sha1.js
+174
-0
regist.html
src/main/webapp/static/share/regist.html
+61
-38
No files found.
src/main/webapp/static/share/css/style.css
View file @
5b37019a
...
@@ -21,6 +21,9 @@
...
@@ -21,6 +21,9 @@
font
:
0px
Arial
;
font
:
0px
Arial
;
overflow
:
hidden
;
overflow
:
hidden
;
}
}
.none
{
display
:
none
!important
;
}
/*
/*
*遮罩
*遮罩
*/
*/
...
@@ -128,4 +131,44 @@
...
@@ -128,4 +131,44 @@
}
}
.alert-main
{
.alert-main
{
position
:
absolute
;
position
:
absolute
;
text-align
:
center
;
z-index
:
1002
;
background
:
#fff
;
width
:
300px
;
height
:
210px
;
margin-left
:
-150px
;
left
:
50%
;
top
:
50%
;
margin-top
:
-105px
;
}
.alert-main
img
{
width
:
70px
;
margin
:
22px
0
15px
0
;
}
.alert-main
p
{
font-size
:
15px
;
color
:
#333
;
text-align
:
center
;
}
.alert-main
a
{
display
:
block
;
height
:
40px
;
line-height
:
40px
;
color
:
#fff
;
text-align
:
center
;
width
:
88%
;
margin
:
24px
auto
0
;
background
:
#FFD852
;
border-radius
:
6px
;
}
.regist-alert-msg
.alert-main
{
height
:
200px
;
}
.regist-alert-msg
p
{
margin-top
:
58px
;
font-size
:
18px
;
padding
:
0
5%
;
}
.regist-alert-msg
a
{
margin
:
55px
auto
0
;
}
}
\ No newline at end of file
src/main/webapp/static/share/js/DES.js
0 → 100644
View file @
5b37019a
/**
* DES 加密算法
*
* 该函数接受一个 8 字节字符串作为普通 DES 算法的密钥(也就是 64 位,但是算法只使用 56 位),或者接受一个 24 字节字符串作为 3DES
* 算法的密钥;第二个参数是要加密或解密的信息字符串;第三个布尔值参数用来说明信息是加密还是解密;接下来的可选参数 mode 如果是 0 表示 ECB
* 模式,1 表示 CBC 模式,默认是 ECB 模式;最后一个可选项是一个 8 字节的输入向量字符串(在 ECB 模式下不使用)。返回的密文是字符串。
*
* 参数: <br>
* key: 8字节字符串作为普通 DES 算法的密钥,或 24 字节字符串作为 3DES <br>
* message: 加密或解密的信息字符串<br>
* encrypt: 布尔值参数用来说明信息是加密还是解密<br>
* mode: 1:CBC模式,0:ECB模式(默认)<br>
* iv:<br>
* padding: 可选项, 8字节的输入向量字符串(在 ECB 模式下不使用)
*/
//des http://www.cnblogs.com/bullub/archive/2013/05/02/3054798.html
//this takes the key, the message, and whether to encrypt or decrypt
function
des
(
key
,
message
,
encrypt
,
mode
,
iv
,
padding
)
{
if
(
encrypt
)
//如果是加密的话,首先转换编码
message
=
unescape
(
encodeURIComponent
(
message
));
//declaring this locally speeds things up a bit
var
spfunction1
=
new
Array
(
0x1010400
,
0
,
0x10000
,
0x1010404
,
0x1010004
,
0x10404
,
0x4
,
0x10000
,
0x400
,
0x1010400
,
0x1010404
,
0x400
,
0x1000404
,
0x1010004
,
0x1000000
,
0x4
,
0x404
,
0x1000400
,
0x1000400
,
0x10400
,
0x10400
,
0x1010000
,
0x1010000
,
0x1000404
,
0x10004
,
0x1000004
,
0x1000004
,
0x10004
,
0
,
0x404
,
0x10404
,
0x1000000
,
0x10000
,
0x1010404
,
0x4
,
0x1010000
,
0x1010400
,
0x1000000
,
0x1000000
,
0x400
,
0x1010004
,
0x10000
,
0x10400
,
0x1000004
,
0x400
,
0x4
,
0x1000404
,
0x10404
,
0x1010404
,
0x10004
,
0x1010000
,
0x1000404
,
0x1000004
,
0x404
,
0x10404
,
0x1010400
,
0x404
,
0x1000400
,
0x1000400
,
0
,
0x10004
,
0x10400
,
0
,
0x1010004
);
var
spfunction2
=
new
Array
(
-
0x7fef7fe0
,
-
0x7fff8000
,
0x8000
,
0x108020
,
0x100000
,
0x20
,
-
0x7fefffe0
,
-
0x7fff7fe0
,
-
0x7fffffe0
,
-
0x7fef7fe0
,
-
0x7fef8000
,
-
0x80000000
,
-
0x7fff8000
,
0x100000
,
0x20
,
-
0x7fefffe0
,
0x108000
,
0x100020
,
-
0x7fff7fe0
,
0
,
-
0x80000000
,
0x8000
,
0x108020
,
-
0x7ff00000
,
0x100020
,
-
0x7fffffe0
,
0
,
0x108000
,
0x8020
,
-
0x7fef8000
,
-
0x7ff00000
,
0x8020
,
0
,
0x108020
,
-
0x7fefffe0
,
0x100000
,
-
0x7fff7fe0
,
-
0x7ff00000
,
-
0x7fef8000
,
0x8000
,
-
0x7ff00000
,
-
0x7fff8000
,
0x20
,
-
0x7fef7fe0
,
0x108020
,
0x20
,
0x8000
,
-
0x80000000
,
0x8020
,
-
0x7fef8000
,
0x100000
,
-
0x7fffffe0
,
0x100020
,
-
0x7fff7fe0
,
-
0x7fffffe0
,
0x100020
,
0x108000
,
0
,
-
0x7fff8000
,
0x8020
,
-
0x80000000
,
-
0x7fefffe0
,
-
0x7fef7fe0
,
0x108000
);
var
spfunction3
=
new
Array
(
0x208
,
0x8020200
,
0
,
0x8020008
,
0x8000200
,
0
,
0x20208
,
0x8000200
,
0x20008
,
0x8000008
,
0x8000008
,
0x20000
,
0x8020208
,
0x20008
,
0x8020000
,
0x208
,
0x8000000
,
0x8
,
0x8020200
,
0x200
,
0x20200
,
0x8020000
,
0x8020008
,
0x20208
,
0x8000208
,
0x20200
,
0x20000
,
0x8000208
,
0x8
,
0x8020208
,
0x200
,
0x8000000
,
0x8020200
,
0x8000000
,
0x20008
,
0x208
,
0x20000
,
0x8020200
,
0x8000200
,
0
,
0x200
,
0x20008
,
0x8020208
,
0x8000200
,
0x8000008
,
0x200
,
0
,
0x8020008
,
0x8000208
,
0x20000
,
0x8000000
,
0x8020208
,
0x8
,
0x20208
,
0x20200
,
0x8000008
,
0x8020000
,
0x8000208
,
0x208
,
0x8020000
,
0x20208
,
0x8
,
0x8020008
,
0x20200
);
var
spfunction4
=
new
Array
(
0x802001
,
0x2081
,
0x2081
,
0x80
,
0x802080
,
0x800081
,
0x800001
,
0x2001
,
0
,
0x802000
,
0x802000
,
0x802081
,
0x81
,
0
,
0x800080
,
0x800001
,
0x1
,
0x2000
,
0x800000
,
0x802001
,
0x80
,
0x800000
,
0x2001
,
0x2080
,
0x800081
,
0x1
,
0x2080
,
0x800080
,
0x2000
,
0x802080
,
0x802081
,
0x81
,
0x800080
,
0x800001
,
0x802000
,
0x802081
,
0x81
,
0
,
0
,
0x802000
,
0x2080
,
0x800080
,
0x800081
,
0x1
,
0x802001
,
0x2081
,
0x2081
,
0x80
,
0x802081
,
0x81
,
0x1
,
0x2000
,
0x800001
,
0x2001
,
0x802080
,
0x800081
,
0x2001
,
0x2080
,
0x800000
,
0x802001
,
0x80
,
0x800000
,
0x2000
,
0x802080
);
var
spfunction5
=
new
Array
(
0x100
,
0x2080100
,
0x2080000
,
0x42000100
,
0x80000
,
0x100
,
0x40000000
,
0x2080000
,
0x40080100
,
0x80000
,
0x2000100
,
0x40080100
,
0x42000100
,
0x42080000
,
0x80100
,
0x40000000
,
0x2000000
,
0x40080000
,
0x40080000
,
0
,
0x40000100
,
0x42080100
,
0x42080100
,
0x2000100
,
0x42080000
,
0x40000100
,
0
,
0x42000000
,
0x2080100
,
0x2000000
,
0x42000000
,
0x80100
,
0x80000
,
0x42000100
,
0x100
,
0x2000000
,
0x40000000
,
0x2080000
,
0x42000100
,
0x40080100
,
0x2000100
,
0x40000000
,
0x42080000
,
0x2080100
,
0x40080100
,
0x100
,
0x2000000
,
0x42080000
,
0x42080100
,
0x80100
,
0x42000000
,
0x42080100
,
0x2080000
,
0
,
0x40080000
,
0x42000000
,
0x80100
,
0x2000100
,
0x40000100
,
0x80000
,
0
,
0x40080000
,
0x2080100
,
0x40000100
);
var
spfunction6
=
new
Array
(
0x20000010
,
0x20400000
,
0x4000
,
0x20404010
,
0x20400000
,
0x10
,
0x20404010
,
0x400000
,
0x20004000
,
0x404010
,
0x400000
,
0x20000010
,
0x400010
,
0x20004000
,
0x20000000
,
0x4010
,
0
,
0x400010
,
0x20004010
,
0x4000
,
0x404000
,
0x20004010
,
0x10
,
0x20400010
,
0x20400010
,
0
,
0x404010
,
0x20404000
,
0x4010
,
0x404000
,
0x20404000
,
0x20000000
,
0x20004000
,
0x10
,
0x20400010
,
0x404000
,
0x20404010
,
0x400000
,
0x4010
,
0x20000010
,
0x400000
,
0x20004000
,
0x20000000
,
0x4010
,
0x20000010
,
0x20404010
,
0x404000
,
0x20400000
,
0x404010
,
0x20404000
,
0
,
0x20400010
,
0x10
,
0x4000
,
0x20400000
,
0x404010
,
0x4000
,
0x400010
,
0x20004010
,
0
,
0x20404000
,
0x20000000
,
0x400010
,
0x20004010
);
var
spfunction7
=
new
Array
(
0x200000
,
0x4200002
,
0x4000802
,
0
,
0x800
,
0x4000802
,
0x200802
,
0x4200800
,
0x4200802
,
0x200000
,
0
,
0x4000002
,
0x2
,
0x4000000
,
0x4200002
,
0x802
,
0x4000800
,
0x200802
,
0x200002
,
0x4000800
,
0x4000002
,
0x4200000
,
0x4200800
,
0x200002
,
0x4200000
,
0x800
,
0x802
,
0x4200802
,
0x200800
,
0x2
,
0x4000000
,
0x200800
,
0x4000000
,
0x200800
,
0x200000
,
0x4000802
,
0x4000802
,
0x4200002
,
0x4200002
,
0x2
,
0x200002
,
0x4000000
,
0x4000800
,
0x200000
,
0x4200800
,
0x802
,
0x200802
,
0x4200800
,
0x802
,
0x4000002
,
0x4200802
,
0x4200000
,
0x200800
,
0
,
0x2
,
0x4200802
,
0
,
0x200802
,
0x4200000
,
0x800
,
0x4000002
,
0x4000800
,
0x800
,
0x200002
);
var
spfunction8
=
new
Array
(
0x10001040
,
0x1000
,
0x40000
,
0x10041040
,
0x10000000
,
0x10001040
,
0x40
,
0x10000000
,
0x40040
,
0x10040000
,
0x10041040
,
0x41000
,
0x10041000
,
0x41040
,
0x1000
,
0x40
,
0x10040000
,
0x10000040
,
0x10001000
,
0x1040
,
0x41000
,
0x40040
,
0x10040040
,
0x10041000
,
0x1040
,
0
,
0
,
0x10040040
,
0x10000040
,
0x10001000
,
0x41040
,
0x40000
,
0x41040
,
0x40000
,
0x10041000
,
0x1000
,
0x40
,
0x10040040
,
0x1000
,
0x41040
,
0x10001000
,
0x40
,
0x10000040
,
0x10040000
,
0x10040040
,
0x10000000
,
0x40000
,
0x10001040
,
0
,
0x10041040
,
0x40040
,
0x10000040
,
0x10040000
,
0x10001000
,
0x10001040
,
0
,
0x10041040
,
0x41000
,
0x41000
,
0x1040
,
0x1040
,
0x40040
,
0x10000000
,
0x10041000
);
//create the 16 or 48 subkeys we will need
var
keys
=
des_createKeys
(
key
);
var
m
=
0
,
i
,
j
,
temp
,
temp2
,
right1
,
right2
,
left
,
right
,
looping
;
var
cbcleft
,
cbcleft2
,
cbcright
,
cbcright2
var
endloop
,
loopinc
;
var
len
=
message
.
length
;
var
chunk
=
0
;
//set up the loops for single and triple des
var
iterations
=
keys
.
length
==
32
?
3
:
9
;
//single or triple des
if
(
iterations
==
3
)
{
looping
=
encrypt
?
new
Array
(
0
,
32
,
2
)
:
new
Array
(
30
,
-
2
,
-
2
);}
else
{
looping
=
encrypt
?
new
Array
(
0
,
32
,
2
,
62
,
30
,
-
2
,
64
,
96
,
2
)
:
new
Array
(
94
,
62
,
-
2
,
32
,
64
,
2
,
30
,
-
2
,
-
2
);}
//pad the message depending on the padding parameter
if
(
padding
==
2
)
message
+=
" "
;
//pad the message with spaces
else
if
(
padding
==
1
)
{
if
(
encrypt
)
{
temp
=
8
-
(
len
%
8
);
message
+=
String
.
fromCharCode
(
temp
,
temp
,
temp
,
temp
,
temp
,
temp
,
temp
,
temp
);
if
(
temp
===
8
)
len
+=
8
;
}
}
//PKCS7 padding
else
if
(
!
padding
)
message
+=
"
\
0
\
0
\
0
\
0
\
0
\
0
\
0
\
0"
;
//pad the message out with null bytes
//store the result here
var
result
=
""
;
var
tempresult
=
""
;
if
(
mode
==
1
)
{
//CBC mode
cbcleft
=
(
iv
.
charCodeAt
(
m
++
)
<<
24
)
|
(
iv
.
charCodeAt
(
m
++
)
<<
16
)
|
(
iv
.
charCodeAt
(
m
++
)
<<
8
)
|
iv
.
charCodeAt
(
m
++
);
cbcright
=
(
iv
.
charCodeAt
(
m
++
)
<<
24
)
|
(
iv
.
charCodeAt
(
m
++
)
<<
16
)
|
(
iv
.
charCodeAt
(
m
++
)
<<
8
)
|
iv
.
charCodeAt
(
m
++
);
m
=
0
;
}
//loop through each 64 bit chunk of the message
while
(
m
<
len
)
{
left
=
(
message
.
charCodeAt
(
m
++
)
<<
24
)
|
(
message
.
charCodeAt
(
m
++
)
<<
16
)
|
(
message
.
charCodeAt
(
m
++
)
<<
8
)
|
message
.
charCodeAt
(
m
++
);
right
=
(
message
.
charCodeAt
(
m
++
)
<<
24
)
|
(
message
.
charCodeAt
(
m
++
)
<<
16
)
|
(
message
.
charCodeAt
(
m
++
)
<<
8
)
|
message
.
charCodeAt
(
m
++
);
//for Cipher Block Chaining mode, xor the message with the previous result
if
(
mode
==
1
)
{
if
(
encrypt
)
{
left
^=
cbcleft
;
right
^=
cbcright
;}
else
{
cbcleft2
=
cbcleft
;
cbcright2
=
cbcright
;
cbcleft
=
left
;
cbcright
=
right
;}}
//first each 64 but chunk of the message must be permuted according to IP
temp
=
((
left
>>>
4
)
^
right
)
&
0x0f0f0f0f
;
right
^=
temp
;
left
^=
(
temp
<<
4
);
temp
=
((
left
>>>
16
)
^
right
)
&
0x0000ffff
;
right
^=
temp
;
left
^=
(
temp
<<
16
);
temp
=
((
right
>>>
2
)
^
left
)
&
0x33333333
;
left
^=
temp
;
right
^=
(
temp
<<
2
);
temp
=
((
right
>>>
8
)
^
left
)
&
0x00ff00ff
;
left
^=
temp
;
right
^=
(
temp
<<
8
);
temp
=
((
left
>>>
1
)
^
right
)
&
0x55555555
;
right
^=
temp
;
left
^=
(
temp
<<
1
);
left
=
((
left
<<
1
)
|
(
left
>>>
31
));
right
=
((
right
<<
1
)
|
(
right
>>>
31
));
//do this either 1 or 3 times for each chunk of the message
for
(
j
=
0
;
j
<
iterations
;
j
+=
3
)
{
endloop
=
looping
[
j
+
1
];
loopinc
=
looping
[
j
+
2
];
//now go through and perform the encryption or decryption
for
(
i
=
looping
[
j
];
i
!=
endloop
;
i
+=
loopinc
)
{
//for efficiency
right1
=
right
^
keys
[
i
];
right2
=
((
right
>>>
4
)
|
(
right
<<
28
))
^
keys
[
i
+
1
];
//the result is attained by passing these bytes through the S selection functions
temp
=
left
;
left
=
right
;
right
=
temp
^
(
spfunction2
[(
right1
>>>
24
)
&
0x3f
]
|
spfunction4
[(
right1
>>>
16
)
&
0x3f
]
|
spfunction6
[(
right1
>>>
8
)
&
0x3f
]
|
spfunction8
[
right1
&
0x3f
]
|
spfunction1
[(
right2
>>>
24
)
&
0x3f
]
|
spfunction3
[(
right2
>>>
16
)
&
0x3f
]
|
spfunction5
[(
right2
>>>
8
)
&
0x3f
]
|
spfunction7
[
right2
&
0x3f
]);
}
temp
=
left
;
left
=
right
;
right
=
temp
;
//unreverse left and right
}
//for either 1 or 3 iterations
//move then each one bit to the right
left
=
((
left
>>>
1
)
|
(
left
<<
31
));
right
=
((
right
>>>
1
)
|
(
right
<<
31
));
//now perform IP-1, which is IP in the opposite direction
temp
=
((
left
>>>
1
)
^
right
)
&
0x55555555
;
right
^=
temp
;
left
^=
(
temp
<<
1
);
temp
=
((
right
>>>
8
)
^
left
)
&
0x00ff00ff
;
left
^=
temp
;
right
^=
(
temp
<<
8
);
temp
=
((
right
>>>
2
)
^
left
)
&
0x33333333
;
left
^=
temp
;
right
^=
(
temp
<<
2
);
temp
=
((
left
>>>
16
)
^
right
)
&
0x0000ffff
;
right
^=
temp
;
left
^=
(
temp
<<
16
);
temp
=
((
left
>>>
4
)
^
right
)
&
0x0f0f0f0f
;
right
^=
temp
;
left
^=
(
temp
<<
4
);
//for Cipher Block Chaining mode, xor the message with the previous result
if
(
mode
==
1
)
{
if
(
encrypt
)
{
cbcleft
=
left
;
cbcright
=
right
;}
else
{
left
^=
cbcleft2
;
right
^=
cbcright2
;}}
tempresult
+=
String
.
fromCharCode
((
left
>>>
24
),
((
left
>>>
16
)
&
0xff
),
((
left
>>>
8
)
&
0xff
),
(
left
&
0xff
),
(
right
>>>
24
),
((
right
>>>
16
)
&
0xff
),
((
right
>>>
8
)
&
0xff
),
(
right
&
0xff
));
chunk
+=
8
;
if
(
chunk
==
512
)
{
result
+=
tempresult
;
tempresult
=
""
;
chunk
=
0
;}
}
//for every 8 characters, or 64 bits in the message
//return the result as an array
result
+=
tempresult
;
result
=
result
.
replace
(
/
\0
*$/g
,
""
);
if
(
!
encrypt
)
{
//如果是解密的话,解密结束后对PKCS7 padding进行解码,并转换成utf-8编码
if
(
padding
===
1
)
{
//PKCS7 padding解码
var
len
=
result
.
length
,
paddingChars
=
0
;
len
&&
(
paddingChars
=
result
.
charCodeAt
(
len
-
1
));
(
paddingChars
<=
8
)
&&
(
result
=
result
.
substring
(
0
,
len
-
paddingChars
));
}
//转换成UTF-8编码
result
=
decodeURIComponent
(
escape
(
result
));
}
return
result
;
}
//end of des
//des_createKeys
//this takes as input a 64 bit key (even though only 56 bits are used)
//as an array of 2 integers, and returns 16 48 bit keys
function
des_createKeys
(
key
)
{
//declaring this locally speeds things up a bit
var
pc2bytes0
=
new
Array
(
0
,
0x4
,
0x20000000
,
0x20000004
,
0x10000
,
0x10004
,
0x20010000
,
0x20010004
,
0x200
,
0x204
,
0x20000200
,
0x20000204
,
0x10200
,
0x10204
,
0x20010200
,
0x20010204
);
var
pc2bytes1
=
new
Array
(
0
,
0x1
,
0x100000
,
0x100001
,
0x4000000
,
0x4000001
,
0x4100000
,
0x4100001
,
0x100
,
0x101
,
0x100100
,
0x100101
,
0x4000100
,
0x4000101
,
0x4100100
,
0x4100101
);
var
pc2bytes2
=
new
Array
(
0
,
0x8
,
0x800
,
0x808
,
0x1000000
,
0x1000008
,
0x1000800
,
0x1000808
,
0
,
0x8
,
0x800
,
0x808
,
0x1000000
,
0x1000008
,
0x1000800
,
0x1000808
);
var
pc2bytes3
=
new
Array
(
0
,
0x200000
,
0x8000000
,
0x8200000
,
0x2000
,
0x202000
,
0x8002000
,
0x8202000
,
0x20000
,
0x220000
,
0x8020000
,
0x8220000
,
0x22000
,
0x222000
,
0x8022000
,
0x8222000
);
var
pc2bytes4
=
new
Array
(
0
,
0x40000
,
0x10
,
0x40010
,
0
,
0x40000
,
0x10
,
0x40010
,
0x1000
,
0x41000
,
0x1010
,
0x41010
,
0x1000
,
0x41000
,
0x1010
,
0x41010
);
var
pc2bytes5
=
new
Array
(
0
,
0x400
,
0x20
,
0x420
,
0
,
0x400
,
0x20
,
0x420
,
0x2000000
,
0x2000400
,
0x2000020
,
0x2000420
,
0x2000000
,
0x2000400
,
0x2000020
,
0x2000420
);
var
pc2bytes6
=
new
Array
(
0
,
0x10000000
,
0x80000
,
0x10080000
,
0x2
,
0x10000002
,
0x80002
,
0x10080002
,
0
,
0x10000000
,
0x80000
,
0x10080000
,
0x2
,
0x10000002
,
0x80002
,
0x10080002
);
var
pc2bytes7
=
new
Array
(
0
,
0x10000
,
0x800
,
0x10800
,
0x20000000
,
0x20010000
,
0x20000800
,
0x20010800
,
0x20000
,
0x30000
,
0x20800
,
0x30800
,
0x20020000
,
0x20030000
,
0x20020800
,
0x20030800
);
var
pc2bytes8
=
new
Array
(
0
,
0x40000
,
0
,
0x40000
,
0x2
,
0x40002
,
0x2
,
0x40002
,
0x2000000
,
0x2040000
,
0x2000000
,
0x2040000
,
0x2000002
,
0x2040002
,
0x2000002
,
0x2040002
);
var
pc2bytes9
=
new
Array
(
0
,
0x10000000
,
0x8
,
0x10000008
,
0
,
0x10000000
,
0x8
,
0x10000008
,
0x400
,
0x10000400
,
0x408
,
0x10000408
,
0x400
,
0x10000400
,
0x408
,
0x10000408
);
var
pc2bytes10
=
new
Array
(
0
,
0x20
,
0
,
0x20
,
0x100000
,
0x100020
,
0x100000
,
0x100020
,
0x2000
,
0x2020
,
0x2000
,
0x2020
,
0x102000
,
0x102020
,
0x102000
,
0x102020
);
var
pc2bytes11
=
new
Array
(
0
,
0x1000000
,
0x200
,
0x1000200
,
0x200000
,
0x1200000
,
0x200200
,
0x1200200
,
0x4000000
,
0x5000000
,
0x4000200
,
0x5000200
,
0x4200000
,
0x5200000
,
0x4200200
,
0x5200200
);
var
pc2bytes12
=
new
Array
(
0
,
0x1000
,
0x8000000
,
0x8001000
,
0x80000
,
0x81000
,
0x8080000
,
0x8081000
,
0x10
,
0x1010
,
0x8000010
,
0x8001010
,
0x80010
,
0x81010
,
0x8080010
,
0x8081010
);
var
pc2bytes13
=
new
Array
(
0
,
0x4
,
0x100
,
0x104
,
0
,
0x4
,
0x100
,
0x104
,
0x1
,
0x5
,
0x101
,
0x105
,
0x1
,
0x5
,
0x101
,
0x105
);
//how many iterations (1 for des, 3 for triple des)
var
iterations
=
key
.
length
>
8
?
3
:
1
;
//changed by Paul 16/6/2007 to use Triple DES for 9+ byte keys
//stores the return keys
var
keys
=
new
Array
(
32
*
iterations
);
//now define the left shifts which need to be done
var
shifts
=
new
Array
(
0
,
0
,
1
,
1
,
1
,
1
,
1
,
1
,
0
,
1
,
1
,
1
,
1
,
1
,
1
,
0
);
//other variables
var
lefttemp
,
righttemp
,
m
=
0
,
n
=
0
,
temp
;
for
(
var
j
=
0
;
j
<
iterations
;
j
++
)
{
//either 1 or 3 iterations
var
left
=
(
key
.
charCodeAt
(
m
++
)
<<
24
)
|
(
key
.
charCodeAt
(
m
++
)
<<
16
)
|
(
key
.
charCodeAt
(
m
++
)
<<
8
)
|
key
.
charCodeAt
(
m
++
);
var
right
=
(
key
.
charCodeAt
(
m
++
)
<<
24
)
|
(
key
.
charCodeAt
(
m
++
)
<<
16
)
|
(
key
.
charCodeAt
(
m
++
)
<<
8
)
|
key
.
charCodeAt
(
m
++
);
temp
=
((
left
>>>
4
)
^
right
)
&
0x0f0f0f0f
;
right
^=
temp
;
left
^=
(
temp
<<
4
);
temp
=
((
right
>>>
-
16
)
^
left
)
&
0x0000ffff
;
left
^=
temp
;
right
^=
(
temp
<<
-
16
);
temp
=
((
left
>>>
2
)
^
right
)
&
0x33333333
;
right
^=
temp
;
left
^=
(
temp
<<
2
);
temp
=
((
right
>>>
-
16
)
^
left
)
&
0x0000ffff
;
left
^=
temp
;
right
^=
(
temp
<<
-
16
);
temp
=
((
left
>>>
1
)
^
right
)
&
0x55555555
;
right
^=
temp
;
left
^=
(
temp
<<
1
);
temp
=
((
right
>>>
8
)
^
left
)
&
0x00ff00ff
;
left
^=
temp
;
right
^=
(
temp
<<
8
);
temp
=
((
left
>>>
1
)
^
right
)
&
0x55555555
;
right
^=
temp
;
left
^=
(
temp
<<
1
);
//the right side needs to be shifted and to get the last four bits of the left side
temp
=
(
left
<<
8
)
|
((
right
>>>
20
)
&
0x000000f0
);
//left needs to be put upside down
left
=
(
right
<<
24
)
|
((
right
<<
8
)
&
0xff0000
)
|
((
right
>>>
8
)
&
0xff00
)
|
((
right
>>>
24
)
&
0xf0
);
right
=
temp
;
//now go through and perform these shifts on the left and right keys
for
(
var
i
=
0
;
i
<
shifts
.
length
;
i
++
)
{
//shift the keys either one or two bits to the left
if
(
shifts
[
i
])
{
left
=
(
left
<<
2
)
|
(
left
>>>
26
);
right
=
(
right
<<
2
)
|
(
right
>>>
26
);}
else
{
left
=
(
left
<<
1
)
|
(
left
>>>
27
);
right
=
(
right
<<
1
)
|
(
right
>>>
27
);}
left
&=
-
0xf
;
right
&=
-
0xf
;
//now apply PC-2, in such a way that E is easier when encrypting or decrypting
//this conversion will look like PC-2 except only the last 6 bits of each byte are used
//rather than 48 consecutive bits and the order of lines will be according to
//how the S selection functions will be applied: S2, S4, S6, S8, S1, S3, S5, S7
lefttemp
=
pc2bytes0
[
left
>>>
28
]
|
pc2bytes1
[(
left
>>>
24
)
&
0xf
]
|
pc2bytes2
[(
left
>>>
20
)
&
0xf
]
|
pc2bytes3
[(
left
>>>
16
)
&
0xf
]
|
pc2bytes4
[(
left
>>>
12
)
&
0xf
]
|
pc2bytes5
[(
left
>>>
8
)
&
0xf
]
|
pc2bytes6
[(
left
>>>
4
)
&
0xf
];
righttemp
=
pc2bytes7
[
right
>>>
28
]
|
pc2bytes8
[(
right
>>>
24
)
&
0xf
]
|
pc2bytes9
[(
right
>>>
20
)
&
0xf
]
|
pc2bytes10
[(
right
>>>
16
)
&
0xf
]
|
pc2bytes11
[(
right
>>>
12
)
&
0xf
]
|
pc2bytes12
[(
right
>>>
8
)
&
0xf
]
|
pc2bytes13
[(
right
>>>
4
)
&
0xf
];
temp
=
((
righttemp
>>>
16
)
^
lefttemp
)
&
0x0000ffff
;
keys
[
n
++
]
=
lefttemp
^
temp
;
keys
[
n
++
]
=
righttemp
^
(
temp
<<
16
);
}
}
//for each iterations
//return the keys we've created
return
keys
;
}
//end of des_createKeys
function
genkey
(
key
,
start
,
end
)
{
//8 byte / 64 bit Key (DES) or 192 bit Key
return
{
key
:
pad
(
key
.
slice
(
start
,
end
)),
vector
:
1
};
}
function
pad
(
key
)
{
for
(
var
i
=
key
.
length
;
i
<
24
;
i
++
)
{
key
+=
"0"
;
}
return
key
;
}
var
des3iv
=
'12345678'
;
var
DES3
=
{
//3DES加密,CBC/PKCS5Padding
encrypt
:
function
(
key
,
input
){
var
genKey
=
genkey
(
key
,
0
,
24
);
return
btoa
(
des
(
genKey
.
key
,
input
,
1
,
1
,
des3iv
,
1
));
},
////3DES解密,CBC/PKCS5Padding
decrypt
:
function
(
key
,
input
){
var
genKey
=
genkey
(
key
,
0
,
24
);
return
des
(
genKey
.
key
,
atob
(
input
),
0
,
1
,
des3iv
,
1
);
}
};
\ No newline at end of file
src/main/webapp/static/share/js/getQueryStringByName.js
0 → 100644
View file @
5b37019a
function
getQueryStringByName
(
name
)
{
var
reg
=
new
RegExp
(
"(^|&)"
+
name
+
"=([^&]*)(&|$)"
,
"i"
);
var
r
=
window
.
location
.
search
.
substr
(
1
).
match
(
reg
);
if
(
r
!=
null
)
return
(
r
[
2
]);
return
null
;
}
src/main/webapp/static/share/js/regist.js
View file @
5b37019a
//页面逻辑
//页面逻辑
(
function
(){
(
function
(){
/*公共变量*/
//从url上截取参数(从第一个页面调过来的参数)(只能截取英文和数字)(需要用到一个插件)
var
$phone
=
getQueryStringByName
(
'phone'
);
//给推荐人手机号赋值
$
(
"#urlPhone"
).
val
(
$phone
);
var
urlPhoneVal
=
$
(
"#urlPhone"
).
val
();
var
key
=
hex_sha1
(
"YOUKA_#SECURITY!_KEY"
);
////3DES解密
var
des3jiemi
=
DES3
.
decrypt
(
key
,
urlPhoneVal
);
//console.info(key);
//console.info(des3jiemi);
/*公共变量*/
var
date
=
Date
.
parse
(
new
Date
());
var
date
=
Date
.
parse
(
new
Date
());
//加密
//加密
hash
=
hex_md5
(
""
+
'Y0UKA@2018'
+
date
);
hash
=
hex_md5
(
""
+
'Y0UKA@2018'
+
date
);
var
validCode
=
true
;
//验证码标记
var
validCode
=
true
;
//验证码标记
var
time
=
60
;
//倒计时
var
time
=
60
;
//倒计时
var
telephoneReg
=
new
RegExp
(
/^
(
1
[
3,4,5,7,8
]{1}[\d]{9})
/
)
;
var
telephoneReg
=
new
RegExp
(
/^
(
1
[
3,4,5,7,8
]{1}[\d]{9})
/
)
;
//验证手机号
//验证手机号
function
validPhone
(
ele
){
function
validPhone
(
ele
){
var
flag
=
true
;
var
flag
=
true
;
if
(
!
(
/^1
[
34578
]\d{9}
$/
.
test
(
ele
.
val
()))){
if
(
!
(
telephoneReg
.
test
(
ele
.
val
()))){
alert
(
"手机号错误啊!!"
)
$
(
"#msgError"
).
removeClass
(
"none"
);
$
(
"#msgFail"
).
html
(
"您输入的手机号码格式有误,请重新输入"
);
flag
=
false
;
flag
=
false
;
}
else
{
}
else
{
flag
=
true
;
flag
=
true
;
...
@@ -24,7 +34,8 @@ function validPhone(ele){
...
@@ -24,7 +34,8 @@ function validPhone(ele){
var
flag
=
true
;
var
flag
=
true
;
var
phone
=
$
(
"#phone"
).
val
();
var
phone
=
$
(
"#phone"
).
val
();
if
(
!
phone
){
if
(
!
phone
){
alert
(
"手机号不能为空!"
)
$
(
"#msgError"
).
removeClass
(
"none"
);
$
(
"#msgFail"
).
html
(
"请输入手机号"
);
flag
=
false
;
flag
=
false
;
}
else
{
}
else
{
flag
=
validPhone
(
$
(
"#phone"
));
flag
=
validPhone
(
$
(
"#phone"
));
...
@@ -41,7 +52,7 @@ function validPhone(ele){
...
@@ -41,7 +52,7 @@ function validPhone(ele){
if
(
validCode
){
if
(
validCode
){
validCode
=
false
;
validCode
=
false
;
$
.
ajax
({
$
.
ajax
({
url
:
'http://
39.107.124.166
:8080/youka-api/api/user/getIdentifyCode'
,
url
:
'http://
youkapay.com
:8080/youka-api/api/user/getIdentifyCode'
,
data
:
content
,
data
:
content
,
dataType
:
'json'
,
dataType
:
'json'
,
type
:
'POST'
,
type
:
'POST'
,
...
@@ -49,6 +60,7 @@ function validPhone(ele){
...
@@ -49,6 +60,7 @@ function validPhone(ele){
console
.
info
(
"验证码"
)
console
.
info
(
"验证码"
)
console
.
info
(
data
)
console
.
info
(
data
)
if
(
data
.
status
==
'2000'
){
if
(
data
.
status
==
'2000'
){
code
.
css
(
"background"
,
"#ddd"
);
var
t
=
setInterval
(
function
()
{
var
t
=
setInterval
(
function
()
{
time
--
;
time
--
;
code
.
html
(
time
+
"s"
);
code
.
html
(
time
+
"s"
);
...
@@ -57,6 +69,7 @@ function validPhone(ele){
...
@@ -57,6 +69,7 @@ function validPhone(ele){
code
.
html
(
"重新获取"
);
code
.
html
(
"重新获取"
);
time
=
60
;
time
=
60
;
validCode
=
true
;
validCode
=
true
;
code
.
css
(
"background"
,
"#FF4E0C"
);
}
}
},
1000
);
},
1000
);
}
}
...
@@ -70,55 +83,81 @@ function validPhone(ele){
...
@@ -70,55 +83,81 @@ function validPhone(ele){
}
}
});
});
//点击提交按钮验证信息
//点击提交按钮验证信息
$
(
"#submit"
).
on
(
"click"
,
function
(){
$
(
"#submit"
).
on
(
"click"
,
function
(){
var
phone
=
$
(
"#phone"
).
val
();
var
phone
=
$
(
"#phone"
).
val
();
var
password
=
$
(
"#password"
).
val
();
var
password
=
$
(
"#password"
).
val
();
var
yzm
=
$
(
"#yzm"
).
val
();
var
yzm
=
$
(
"#yzm"
).
val
();
if
(
phone
==
""
){
var
tjPhone
=
des3jiemi
;
alert
(
"请输入手机号!"
);
console
.
info
(
tjPhone
);
return
false
;
if
(
phone
==
""
){
}
else
if
(
!
telephoneReg
.
test
(
phone
)){
$
(
"#msgError"
).
removeClass
(
"none"
);
alert
(
"请输入正确的手机号!"
);
$
(
"#msgFail"
).
html
(
"请输入手机号"
);
}
else
if
(
password
==
""
){
return
false
;
alert
(
"请输入密码!"
);
}
else
if
(
!
telephoneReg
.
test
(
phone
)){
return
false
;
$
(
"#msgError"
).
removeClass
(
"none"
);
}
else
if
(
password
.
length
>
12
||
password
.
length
<
6
){
$
(
"#msgFail"
).
html
(
"您输入的手机号码格式有误,请重新输入"
);
alert
(
"请设置6-12位长度密码!"
);
}
else
if
(
password
==
""
){
return
false
;
$
(
"#msgError"
).
removeClass
(
"none"
);
}
else
if
(
yzm
==
""
){
$
(
"#msgFail"
).
html
(
"请输入密码"
);
alert
(
"请输入验证码!"
);
return
false
;
return
false
;
}
else
if
(
password
.
length
>
12
||
password
.
length
<
6
){
}
else
{
$
(
"#msgError"
).
removeClass
(
"none"
);
var
content
=
{
$
(
"#msgFail"
).
html
(
"请设置6-12位长度密码"
);
subMerchantCode
:
''
,
return
false
;
timestamp
:
date
,
}
else
if
(
yzm
==
""
){
sign
:
hash
,
$
(
"#msgError"
).
removeClass
(
"none"
);
mobile
:
phone
,
$
(
"#msgFail"
).
html
(
"请输入验证码"
);
newPassword
:
password
,
return
false
;
identityCode
:
yzm
,
}
else
{
function
:
'1'
,
var
content
=
{
// recommendedMobile:''
subMerchantCode
:
''
,
}
timestamp
:
date
,
// var params = {
sign
:
hash
,
// 'content':JSON.stringify(content)
mobile
:
phone
,
// };
newPassword
:
password
,
console
.
info
(
"提交"
)
identityCode
:
yzm
,
console
.
info
(
content
)
function
:
'1'
,
$
.
ajax
({
recommendedMobile
:
tjPhone
type
:
'POST'
,
}
url
:
'http://39.107.124.166:8080/youka-api/api/user/signUp'
,
console
.
info
(
"提交"
)
data
:
content
,
console
.
info
(
content
)
dataType
:
'json'
,
$
.
ajax
({
success
:
function
(
data
){
type
:
'POST'
,
console
.
info
(
data
)
url
:
'http://youkapay.com:8080/youka-api/api/user/signUp'
,
},
data
:
content
,
error
:
function
(
data
){
dataType
:
'json'
,
console
.
info
(
"错误"
)
success
:
function
(
data
){
console
.
info
(
data
)
console
.
info
(
data
)
}
if
(
data
.
status
==
'2000'
){
});
//跳转到市场
}
// window.location = "apk下载地址";
});
var
user
=
navigator
.
userAgent
;
if
(
user
.
match
(
/
(
iphone os
)
/i
))
{
console
.
log
(
"isphone"
);
// window.location.href='https://appsto.re/cn/KG6P2.i'
}
else
if
(
user
.
match
(
/ipad/i
)){
console
.
log
(
"isipad"
);
}
else
if
(
user
.
match
(
/
(
midp|ucweb|android|windows ce|windows mobile
)
/i
)){
console
.
log
(
"android"
);
// window.location.href='http://tstatics.iyuwan.com/files/apk/201605/Iyuwan.apk'
};
}
else
{
$
(
"#registError"
).
removeClass
(
"none"
);
$
(
"#registFail"
).
html
(
data
.
message
);
}
},
});
}
});
//关闭弹窗
$
(
"#closeBtn"
).
on
(
"click"
,
function
(){
$
(
".regist-alert"
).
addClass
(
"none"
);
})
$
(
"#msgCloseBtn"
).
on
(
"click"
,
function
(){
$
(
".regist-alert-msg"
).
addClass
(
"none"
);
})
})();
})();
\ No newline at end of file
src/main/webapp/static/share/js/sha1.js
0 → 100644
View file @
5b37019a
/*
* A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined
* in FIPS PUB 180-1
* Version 2.1-BETA Copyright Paul Johnston 2000 - 2002.
* Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
* Distributed under the BSD License
* See http://pajhome.org.uk/crypt/md5 for details.
*/
/*
* Configurable variables. You may need to tweak these to be compatible with
* the server-side, but the defaults work in most cases.
*/
var
hexcase
=
0
;
/* hex output format. 0 - lowercase; 1 - uppercase */
var
b64pad
=
""
;
/* base-64 pad character. "=" for strict RFC compliance */
var
chrsz
=
8
;
/* bits per input character. 8 - ASCII; 16 - Unicode */
/*
* These are the functions you'll usually want to call
* They take string arguments and return either hex or base-64 encoded strings
*/
function
hex_sha1
(
s
)
{
return
binb2hex
(
core_sha1
(
str2binb
(
s
),
s
.
length
*
chrsz
));
}
function
b64_sha1
(
s
)
{
return
binb2b64
(
core_sha1
(
str2binb
(
s
),
s
.
length
*
chrsz
));
}
function
str_sha1
(
s
)
{
return
binb2str
(
core_sha1
(
str2binb
(
s
),
s
.
length
*
chrsz
));
}
function
hex_hmac_sha1
(
key
,
data
)
{
return
binb2hex
(
core_hmac_sha1
(
key
,
data
));
}
function
b64_hmac_sha1
(
key
,
data
)
{
return
binb2b64
(
core_hmac_sha1
(
key
,
data
));
}
function
str_hmac_sha1
(
key
,
data
)
{
return
binb2str
(
core_hmac_sha1
(
key
,
data
));
}
/*
* Perform a simple self-test to see if the VM is working
*/
function
sha1_vm_test
()
{
return
hex_sha1
(
"abc"
)
==
"a9993e364706816aba3e25717850c26c9cd0d89d"
;
}
/*
* Calculate the SHA-1 of an array of big-endian words, and a bit length
*/
function
core_sha1
(
x
,
len
)
{
/* append padding */
x
[
len
>>
5
]
|=
0x80
<<
(
24
-
len
%
32
);
x
[((
len
+
64
>>
9
)
<<
4
)
+
15
]
=
len
;
var
w
=
Array
(
80
);
var
a
=
1732584193
;
var
b
=
-
271733879
;
var
c
=
-
1732584194
;
var
d
=
271733878
;
var
e
=
-
1009589776
;
for
(
var
i
=
0
;
i
<
x
.
length
;
i
+=
16
)
{
var
olda
=
a
;
var
oldb
=
b
;
var
oldc
=
c
;
var
oldd
=
d
;
var
olde
=
e
;
for
(
var
j
=
0
;
j
<
80
;
j
++
)
{
if
(
j
<
16
)
w
[
j
]
=
x
[
i
+
j
];
else
w
[
j
]
=
rol
(
w
[
j
-
3
]
^
w
[
j
-
8
]
^
w
[
j
-
14
]
^
w
[
j
-
16
],
1
);
var
t
=
safe_add
(
safe_add
(
rol
(
a
,
5
),
sha1_ft
(
j
,
b
,
c
,
d
)),
safe_add
(
safe_add
(
e
,
w
[
j
]),
sha1_kt
(
j
)));
e
=
d
;
d
=
c
;
c
=
rol
(
b
,
30
);
b
=
a
;
a
=
t
;
}
a
=
safe_add
(
a
,
olda
);
b
=
safe_add
(
b
,
oldb
);
c
=
safe_add
(
c
,
oldc
);
d
=
safe_add
(
d
,
oldd
);
e
=
safe_add
(
e
,
olde
);
}
return
Array
(
a
,
b
,
c
,
d
,
e
);
}
/*
* Perform the appropriate triplet combination function for the current
* iteration
*/
function
sha1_ft
(
t
,
b
,
c
,
d
)
{
if
(
t
<
20
)
return
(
b
&
c
)
|
((
~
b
)
&
d
);
if
(
t
<
40
)
return
b
^
c
^
d
;
if
(
t
<
60
)
return
(
b
&
c
)
|
(
b
&
d
)
|
(
c
&
d
);
return
b
^
c
^
d
;
}
/*
* Determine the appropriate additive constant for the current iteration
*/
function
sha1_kt
(
t
)
{
return
(
t
<
20
)
?
1518500249
:
(
t
<
40
)
?
1859775393
:
(
t
<
60
)
?
-
1894007588
:
-
899497514
;
}
/*
* Calculate the HMAC-SHA1 of a key and some data
*/
function
core_hmac_sha1
(
key
,
data
)
{
var
bkey
=
str2binb
(
key
);
if
(
bkey
.
length
>
16
)
bkey
=
core_sha1
(
bkey
,
key
.
length
*
chrsz
);
var
ipad
=
Array
(
16
),
opad
=
Array
(
16
);
for
(
var
i
=
0
;
i
<
16
;
i
++
)
{
ipad
[
i
]
=
bkey
[
i
]
^
0x36363636
;
opad
[
i
]
=
bkey
[
i
]
^
0x5C5C5C5C
;
}
var
hash
=
core_sha1
(
ipad
.
concat
(
str2binb
(
data
)),
512
+
data
.
length
*
chrsz
);
return
core_sha1
(
opad
.
concat
(
hash
),
512
+
160
);
}
/*
* Add integers, wrapping at 2^32. This uses 16-bit operations internally
* to work around bugs in some JS interpreters.
*/
function
safe_add
(
x
,
y
)
{
var
lsw
=
(
x
&
0xFFFF
)
+
(
y
&
0xFFFF
);
var
msw
=
(
x
>>
16
)
+
(
y
>>
16
)
+
(
lsw
>>
16
);
return
(
msw
<<
16
)
|
(
lsw
&
0xFFFF
);
}
/*
* Bitwise rotate a 32-bit number to the left.
*/
function
rol
(
num
,
cnt
)
{
return
(
num
<<
cnt
)
|
(
num
>>>
(
32
-
cnt
));
}
/*
* Convert an 8-bit or 16-bit string to an array of big-endian words
* In 8-bit function, characters >255 have their hi-byte silently ignored.
*/
function
str2binb
(
str
)
{
var
bin
=
Array
();
var
mask
=
(
1
<<
chrsz
)
-
1
;
for
(
var
i
=
0
;
i
<
str
.
length
*
chrsz
;
i
+=
chrsz
)
bin
[
i
>>
5
]
|=
(
str
.
charCodeAt
(
i
/
chrsz
)
&
mask
)
<<
(
24
-
i
%
32
);
return
bin
;
}
/*
* Convert an array of big-endian words to a string
*/
function
binb2str
(
bin
)
{
var
str
=
""
;
var
mask
=
(
1
<<
chrsz
)
-
1
;
for
(
var
i
=
0
;
i
<
bin
.
length
*
32
;
i
+=
chrsz
)
str
+=
String
.
fromCharCode
((
bin
[
i
>>
5
]
>>>
(
24
-
i
%
32
))
&
mask
);
return
str
;
}
/*
* Convert an array of big-endian words to a hex string.
*/
function
binb2hex
(
binarray
)
{
var
hex_tab
=
hexcase
?
"0123456789ABCDEF"
:
"0123456789abcdef"
;
var
str
=
""
;
for
(
var
i
=
0
;
i
<
binarray
.
length
*
4
;
i
++
)
{
str
+=
hex_tab
.
charAt
((
binarray
[
i
>>
2
]
>>
((
3
-
i
%
4
)
*
8
+
4
))
&
0xF
)
+
hex_tab
.
charAt
((
binarray
[
i
>>
2
]
>>
((
3
-
i
%
4
)
*
8
))
&
0xF
);
}
return
str
;
}
/*
* Convert an array of big-endian words to a base-64 string
*/
function
binb2b64
(
binarray
)
{
var
tab
=
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
;
var
str
=
""
;
for
(
var
i
=
0
;
i
<
binarray
.
length
*
4
;
i
+=
3
)
{
var
triplet
=
(((
binarray
[
i
>>
2
]
>>
8
*
(
3
-
i
%
4
))
&
0xFF
)
<<
16
)
|
(((
binarray
[
i
+
1
>>
2
]
>>
8
*
(
3
-
(
i
+
1
)
%
4
))
&
0xFF
)
<<
8
)
|
((
binarray
[
i
+
2
>>
2
]
>>
8
*
(
3
-
(
i
+
2
)
%
4
))
&
0xFF
);
for
(
var
j
=
0
;
j
<
4
;
j
++
)
{
if
(
i
*
8
+
j
*
6
>
binarray
.
length
*
32
)
str
+=
b64pad
;
else
str
+=
tab
.
charAt
((
triplet
>>
6
*
(
3
-
j
))
&
0x3F
);
}
}
return
str
;
}
\ No newline at end of file
src/main/webapp/static/share/regist.html
View file @
5b37019a
<!DOCTYPE html>
<!DOCTYPE html>
<html>
<html>
<head>
<head>
<meta
charset=
"utf-8"
>
<meta
charset=
"utf-8"
>
<meta
http-equiv=
"X-UA-Compatible"
content=
"IE=edge"
>
<meta
http-equiv=
"X-UA-Compatible"
content=
"IE=edge"
>
<meta
name=
"viewport"
content=
"width=device-width"
>
<meta
name=
"viewport"
content=
"width=device-width"
>
<script
type=
"text/javascript"
src=
"js/jquery-1.9.1.min.js"
></script>
<script
type=
"text/javascript"
src=
"js/jquery-1.9.1.min.js"
></script>
<script
type=
"text/javascript"
src=
"js/md5.js"
></script>
<script
type=
"text/javascript"
src=
"js/getQueryStringByName.js"
></script>
<link
rel=
"stylesheet"
href=
"css/style.css"
>
<script
type=
"text/javascript"
src=
"js/DES.js"
></script>
<title>
注册
</title>
<script
type=
"text/javascript"
src=
"js/sha1.js"
></script>
<script
type=
"text/javascript"
src=
"js/md5.js"
></script>
<link
rel=
"stylesheet"
href=
"css/style.css"
>
<title>
注册
</title>
</head>
</head>
<body>
<body>
<div
class=
"wrap"
>
<div
class=
"wrap"
>
<!--头部-->
<!-- 注册失败的弹窗-->
<div
class=
"purse-header"
>
<div
class=
"regist-alert none"
id=
"registError"
>
<a
class=
"left"
></a>
<div
class=
"mask"
></div>
<p>
注册
</p>
<div
class=
"alert-main"
>
<div
class=
"clearf"
></div>
<img
src=
"image/regist-fail.png"
>
</div>
<p
id=
"registFail"
>
注册失败
</p>
<div
class=
"purse-content"
>
<a
id=
"closeBtn"
>
确定
</a>
<!-- 一行-->
<div
class=
"content-main"
>
<div
class=
"left main-img"
>
<img
src=
"image/purse-person.png"
>
</div>
</div>
<input
placeholder=
"请输入手机号"
class=
"left"
id=
"phone"
>
<div
class=
"clearf"
></div>
</div>
</div>
<div
class=
"content-main"
>
<!--验证提示信息-->
<div
class=
"left main-img"
>
<div
class=
"regist-alert-msg none"
id=
"msgError"
>
<img
src=
"image/purse-psd.png"
>
<div
class=
"mask"
></div>
<div
class=
"alert-main"
>
<p
id=
"msgFail"
></p>
<a
id=
"msgCloseBtn"
>
确定
</a>
</div>
</div>
<input
placeholder=
"请输入密码"
class=
"left"
type=
"password"
id=
"password"
>
</div>
<a><img
src=
"image/psd-show.png"
></a>
<!--头部-->
<div
class=
"purse-header"
>
<!-- <a class="left"></a>-->
<p>
注册
</p>
<div
class=
"clearf"
></div>
<div
class=
"clearf"
></div>
</div>
</div>
<div
class=
"content-main"
>
<div
class=
"purse-content"
>
<div
class=
"left main-img"
>
<!-- 一整行-->
<img
src=
"image/yzm-img.png"
>
<div
class=
"content-main"
>
<div
class=
"left main-img"
>
<img
src=
"image/purse-person.png"
>
</div>
<input
placeholder=
"请输入手机号"
class=
"left"
id=
"phone"
>
<div
class=
"clearf"
></div>
</div>
</div>
<input
placeholder=
"请输入验证码"
class=
"left"
style=
"width:54%;margin-right:6%"
id=
"yzm"
>
<div
class=
"content-main"
>
<a
class=
"left getyzm"
id=
"captchaButton"
>
获取验证码
</a>
<div
class=
"left main-img"
>
<div
class=
"clearf"
></div>
<img
src=
"image/purse-psd.png"
>
</div>
<input
placeholder=
"请输入密码"
class=
"left"
type=
"password"
id=
"password"
>
<a><img
src=
"image/psd-show.png"
></a>
<div
class=
"clearf"
></div>
</div>
<div
class=
"content-main"
>
<div
class=
"left main-img"
>
<img
src=
"image/yzm-img.png"
>
</div>
<input
placeholder=
"请输入验证码"
class=
"left"
style=
"width:54%;margin-right:6%"
id=
"yzm"
>
<a
class=
"left getyzm"
id=
"captchaButton"
>
获取验证码
</a>
<div
class=
"clearf"
></div>
</div>
<!-- 提交按钮-->
<!--推荐人手机号-->
<input
class=
"none"
value=
""
id=
"urlPhone"
>
<a
class=
"btn"
id=
"submit"
>
提交
</a>
</div>
</div>
<!-- 提交按钮
-->
<!--底部背景
-->
<
a
class=
"btn"
id=
"submit"
>
提交
</a
>
<
div
class=
"purse-footer"
></div
>
</div>
</div>
<!--底部背景-->
<script
type=
"text/javascript"
src=
"js/regist.js"
></script>
<div
class=
"purse-footer"
></div>
</div>
<script
type=
"text/javascript"
src=
"js/regist.js"
></script>
</body>
</body>
</html>
</html>
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment