zoukankan
html css js c++ java
jsp 应用系统整合discuz论坛用户系统
关键代码
/** */
/**
* MD5算法
*
@param
strToEncrypt
*
@return
*/
public
static
String Md5(String strToEncrypt)
{
char
hexDigits[]
=
{
'
0
'
,
'
1
'
,
'
2
'
,
'
3
'
,
'
4
'
,
'
5
'
,
'
6
'
,
'
7
'
,
'
8
'
,
'
9
'
,
'
a
'
,
'
b
'
,
'
c
'
,
'
d
'
,
'
e
'
,
'
f
'
}
;
try
{
byte
[] strTemp
=
strToEncrypt.getBytes();
MessageDigest mdTemp
=
MessageDigest.getInstance(
"
MD5
"
);
mdTemp.update(strTemp);
byte
[] md
=
mdTemp.digest();
int
j
=
md.length;
char
str[]
=
new
char
[j
*
2
];
int
k
=
0
;
for
(
int
i
=
0
; i
<
j; i
++
)
{
byte
byte0
=
md[i];
str[k
++
]
=
hexDigits[byte0
>>>
4
&
0xf
];
str[k
++
]
=
hexDigits[byte0
&
0xf
];
}
return
new
String(str);
}
catch
(Exception e)
{
return
""
;
}
}
整合函数
package
com.tecamo.cms.util;
import
java.io.UnsupportedEncodingException;
import
java.util.Map;
import
java.util.Random;
import
java.util.Set;
import
com.tecamo.util.encrypt.EncryptString;
import
sun.misc.BASE64Decoder;
public
class
DiscuzPassportUtils
{
public
static
String passportEncrypt(String src, String key)
{
Random random
=
new
Random();
random.setSeed(System.currentTimeMillis());
String rand
=
""
+
random.nextInt()
%
32000
;
String encryptKey
=
EncryptString.encryptMD5(rand);
int
ctr
=
0
;
String tmp
=
""
;
for
(
int
i
=
0
; i
<
src.length();
++
i)
{
ctr
=
(ctr
==
encryptKey.length()
?
0
: ctr);
tmp
+=
encryptKey.charAt(ctr);
char
c
=
(
char
) (src.charAt(i)
^
encryptKey.charAt(ctr));
tmp
+=
c;
ctr
++
;
}
String passportKey
=
passportKey(tmp, key);
return
new
sun.misc.BASE64Encoder().encode(passportKey.getBytes());
}
public
static
String passortDecrypt(String src, String key)
{
byte
[] bytes
=
null
;
try
{
bytes
=
new
BASE64Decoder().decodeBuffer(src);
src
=
new
String(bytes);
}
catch
(Exception e)
{
return
null
;
}
src
=
passportKey(src, key);
String tmp
=
""
;
for
(
int
i
=
0
; i
<
src.length();
++
i)
{
char
c
=
(
char
)(src.charAt(i)
^
src.charAt(
++
i));
tmp
+=
c;
}
return
tmp;
}
public
static
String passportKey(String src, String key)
{
String encryptKey
=
EncryptString.encryptMD5(key);
int
ctr
=
0
;
String tmp
=
""
;
for
(
int
i
=
0
; i
<
src.length();
++
i)
{
ctr
=
(ctr
==
encryptKey.length()
?
0
: ctr);
char
c
=
(
char
) (src.charAt(i)
^
encryptKey.charAt(ctr));
tmp
+=
c;
ctr
++
;
}
return
tmp;
}
public
static
String passportEncode(Map
<
String, String
>
data)
{
Set
<
String
>
keys
=
data.keySet();
String ret
=
""
;
for
(String key : keys)
{
try
{
ret
+=
java.net.URLEncoder.encode(key,
"
UTF-8
"
)
+
"
=
"
+
java.net.URLEncoder.encode(data.get(key),
"
UTF-8
"
)
+
"
&
"
;
}
catch
(UnsupportedEncodingException e)
{
return
""
;
}
}
if
(ret.length()
>
0
)
return
ret.substring(
0
, ret.length()
-
1
);
return
""
;
}
}
调用方法:
login.jsp
<%
@ page language
=
"
java
"
import
=
"
java.util.*
"
pageEncoding
=
"
gbk
"
%>
<%
@page
import
=
"
com.tecamo.util.web.MyRequest
"
%>
<%
@page
import
=
"
com.tecamo.cms.util.DiscuzPassportUtils
"
%>
<%
@page
import
=
"
com.tecamo.cms.util.ShareFunction
"
%>
<%
@page
import
=
"
com.tecamo.util.encrypt.EncryptString
"
%>
<%
@page
import
=
"
java.net.URLEncoder
"
%>
<%
String strUser
=
(String) session.getAttribute(
"
username
"
);
if
(strUser
!=
null
&&
!
strUser.equals(
""
))
{
out.println(
"
当前用户:
"
+
strUser);
}
String forward
=
MyRequest.getString(request,
"
forward
"
,
""
);
String action
=
MyRequest.getString(request,
"
action
"
,
""
);
if
(action.equals(
"
login
"
))
{
String forumURL
=
"
http://devserver:8066
"
;
String userName
=
MyRequest.getString(request,
"
account
"
,
""
);
String email
=
userName;
String pwd
=
MyRequest.getString(request,
"
pwd
"
,
""
);
Map
<
String, String
>
mb
=
new
LinkedHashMap
<
String, String
>
();
mb.put(
"
time
"
,
""
+
System.currentTimeMillis());
mb.put(
"
username
"
, userName);
mb.put(
"
email
"
, email);
mb.put(
"
password
"
, pwd);
String key
=
"
12345678901
"
;
String enc
=
DiscuzPassportUtils.passportEncode(mb);
String auth
=
DiscuzPassportUtils.passportEncrypt(enc, key);
String verify
=
"
login
"
+
auth
+
forward
+
key;
verify
=
EncryptString.encryptMD5(verify);
String location
=
forumURL
+
"
/api/passport.php?action=login&auth=
"
+
URLEncoder.encode(auth,
"
UTF-8
"
)
+
"
&forward=
"
+
URLEncoder.encode(forward,
"
UTF-8
"
)
+
"
&verify=
"
+
URLEncoder.encode(verify,
"
UTF-8
"
);
response.sendRedirect(location);
session.setAttribute(
"
username
"
,userName);
}
%>
<!
DOCTYPE HTML PUBLIC
"
-//W3C//DTD HTML 4.01 Transitional//EN
"
>
<
html
>
<
head
>
</
head
>
<
body
>
<
form
>
<
table
>
<
tr
>
<
td
>
帐号
</
td
><
td
><
input type
=
"
text
"
name
=
"
account
"
></
td
>
</
tr
>
<
tr
><
td
>
密码
</
td
><
td
><
input type
=
"
password
"
name
=
"
pwd
"
></
td
></
tr
>
<
tr
><
td colspan
=
"
2
"
>
<
input type
=
"
hidden
"
value
=
"
<%=forward%>
"
>
<
input type
=
"
hidden
"
name
=
"
action
"
value
=
"
login
"
>
<
input type
=
"
submit
"
value
=
"
登录
"
>
</
td
></
tr
>
</
table
>
</
form
>
</
body
>
</
html
>
logout.jsp
<%
@ page language
=
"
java
"
import
=
"
java.util.*
"
pageEncoding
=
"
ISO-8859-1
"
%>
<%
@page
import
=
"
com.tecamo.util.encrypt.EncryptString
"
%>
<%
@page
import
=
"
java.net.URLEncoder
"
%>
<%
@page
import
=
"
com.tecamo.util.web.MyRequest
"
%>
<%
//discuz 地址
String forumURL
=
http://dddd:8066
;
String forward
=
MyRequest.getString(request,
"
forward
"
,
""
);
//discuz 配置的私钥
String key
=
"
12345678901
"
;
String verify
=
"
logout
"
+
forward
+
key;
verify
=
EncryptString.encryptMD5(verify);
String location
=
forumURL
+
"
/api/passport.php?action=logout&forward=
"
+
URLEncoder.encode(forward,
"
UTF-8
"
)
+
"
&verify=
"
+
URLEncoder.encode(verify,
"
UTF-8
"
);
response.sendRedirect(location);
session.invalidate();
%>
查看全文
相关阅读:
Python爬虫系列(六):搜索文档树
Python爬虫系列(五):分析HTML结构
Python爬虫系列(四):Beautiful Soup解析HTML之把HTML转成Python对象
Python爬虫系列(三):requests高级耍法
Python爬虫系列(二):requests基础
Python爬虫系列(一):从零开始,安装环境
Python操作rabbitmq系列(六):进行RPC调用
Python操作rabbitmq系列(五):根据主题分配消息
Python操作rabbitmq系列(四):根据类型订阅消息
Django使用模板进行动态局部刷新
原文地址:https://www.cnblogs.com/yg_zhang/p/937565.html
最新文章
telnet协议的root 账号登陆
Java Excel导出时文件名乱码
SpringBoot+Mybatis logback不打印SQL解决方案
Mysql和Hadoop+Hive有什么关系?
Maven中添加镜像
Maven中遇到Unsupported major.minor version 51.0错误
C# 从配置文件中读取/写入信息
Apache配置对外访问默认路径(域名默认访问路径)
PHP安装过程中问题详解
Laravel中如何做数据库迁移
热门文章
[PHP]
laravel中如何区分get数据和post数据
json_encode中文不转义问题
微信小程序前台的用户数据入库(后台Laravel)
HTTP响应头 状态码
DoS攻击种类
SQLMAP注入教程-11种常见SQLMAP使用方法详解
将图片中的一部分图片用ps进行旋转
ps怎么把一种颜色变成另一种颜色
Python爬虫系列(七):提高解析效率
Copyright © 2011-2022 走看看