Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
G
glinfo-api
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
林业通
glinfo-api
Commits
6dcf1796
提交
6dcf1796
authored
5月 07, 2022
作者:
linzhenjie
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
加mqtt验证接口
上级
7086507c
隐藏空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
131 行增加
和
0 行删除
+131
-0
EncryptUtil.java
...main/java/tech/glinfo/enbao/common/utils/EncryptUtil.java
+42
-0
MqttController.java
.../glinfo/enbao/modules/mqtt/controller/MqttController.java
+27
-0
AuthEntity.java
...ava/tech/glinfo/enbao/modules/mqtt/entity/AuthEntity.java
+11
-0
MqttTest.java
appapi/src/test/java/MqttTest.java
+51
-0
没有找到文件。
appapi/src/main/java/tech/glinfo/enbao/common/utils/EncryptUtil.java
0 → 100644
浏览文件 @
6dcf1796
package
tech
.
glinfo
.
enbao
.
common
.
utils
;
import
java.util.Arrays
;
import
java.util.Collections
;
public
class
EncryptUtil
{
/**
* 根据设备编号计算mqtt登录密码
* @param sn 设备编号,14位 如002EB212230201
* @return
*/
public
static
String
encrypt
(
String
sn
)
{
if
(
sn
==
null
||
sn
.
length
()
!=
14
)
{
return
null
;
}
String
[]
ns
=
sn
.
substring
(
5
).
split
(
""
);
int
len
=
ns
.
length
;
String
[]
ons
=
new
String
[
len
];
System
.
arraycopy
(
ns
,
0
,
ons
,
0
,
ns
.
length
);
// 第一步把SN 码后 9位从大到小排序
Arrays
.
sort
(
ns
,
Collections
.
reverseOrder
());
// System.out.println(Arrays.toString(ons));
// System.out.println(Arrays.toString(ns));
int
sum
=
0
;
int
[]
is
=
new
int
[
len
];
// 第二步 排序后的与未排序的进行异或运算 并计算一个累加和
for
(
int
i
=
0
;
i
<
len
;
i
++)
{
int
a
=
Integer
.
valueOf
(
ns
[
i
]);
int
b
=
Integer
.
valueOf
(
ons
[
i
]);
is
[
i
]
=
a
^
b
;
sum
+=
is
[
i
];
}
// System.out.println(sum);
char
[]
pwd
=
new
char
[
len
];
// 第三步 异或后的再进行遍历一遍 并且加上该键值再加上累加和 再对26求余 再加上 97
for
(
int
i
=
0
;
i
<
len
;
i
++)
{
pwd
[
i
]
=
(
char
)
((
i
+
sum
+
is
[
i
])
%
26
+
97
);
}
// System.out.println(String.valueOf(pwd));
return
String
.
valueOf
(
pwd
);
}
}
appapi/src/main/java/tech/glinfo/enbao/modules/mqtt/controller/MqttController.java
0 → 100644
浏览文件 @
6dcf1796
package
tech
.
glinfo
.
enbao
.
modules
.
mqtt
.
controller
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
tech.glinfo.enbao.common.utils.EncryptUtil
;
import
tech.glinfo.enbao.modules.mqtt.entity.AuthEntity
;
@Slf4j
@RestController
@RequestMapping
(
"mqtt"
)
public
class
MqttController
{
@PostMapping
(
"auth"
)
public
ResponseEntity
<
Object
>
auth
(
AuthEntity
auth
){
log
.
info
(
"请求参数:{}"
,
auth
);
String
pwd
=
EncryptUtil
.
encrypt
(
auth
.
getUsername
());
if
(
auth
.
getPassword
()
!=
null
&&
auth
.
getPassword
().
equals
(
pwd
))
{
return
new
ResponseEntity
<
Object
>(
HttpStatus
.
OK
);
}
else
{
return
new
ResponseEntity
<
Object
>(
"auth deny!"
,
HttpStatus
.
UNAUTHORIZED
);
}
}
}
appapi/src/main/java/tech/glinfo/enbao/modules/mqtt/entity/AuthEntity.java
0 → 100644
浏览文件 @
6dcf1796
package
tech
.
glinfo
.
enbao
.
modules
.
mqtt
.
entity
;
import
lombok.Data
;
@Data
public
class
AuthEntity
{
private
String
clientid
;
//客户端ID
private
String
username
;
//用户名
private
String
password
;
//密码
private
String
ip
;
//ip地址
}
appapi/src/test/java/MqttTest.java
0 → 100644
浏览文件 @
6dcf1796
import
io.swagger.models.auth.In
;
import
java.util.Arrays
;
import
java.util.Collections
;
public
class
MqttTest
{
public
static
void
main
(
String
[]
args
)
{
for
(
int
i
=
4
;
i
<
10
;
i
++)
{
String
sn
=
"002EB21223020"
+
i
;
String
n
=
sn
.
substring
(
5
);
// String[] ns = n.split("");
// String[] ons = new String[9];
// System.arraycopy(ns, 0, ons, 0, ns.length);
// Arrays.sort(ns, Collections.reverseOrder());
// System.out.println(Arrays.toString(ons));
// System.out.println(Arrays.toString(ns));
encrypt
(
n
);
}
}
public
static
String
encrypt
(
String
sn
)
{
String
[]
ns
=
sn
.
split
(
""
);
int
len
=
ns
.
length
;
String
[]
ons
=
new
String
[
len
];
System
.
arraycopy
(
ns
,
0
,
ons
,
0
,
ns
.
length
);
Arrays
.
sort
(
ns
,
Collections
.
reverseOrder
());
System
.
out
.
println
(
Arrays
.
toString
(
ons
));
// System.out.println(Arrays.toString(ns));
int
sum
=
0
;
int
[]
is
=
new
int
[
len
];
for
(
int
i
=
0
;
i
<
len
;
i
++)
{
int
a
=
Integer
.
valueOf
(
ns
[
i
]);
int
b
=
Integer
.
valueOf
(
ons
[
i
]);
is
[
i
]
=
a
^
b
;
sum
+=
is
[
i
];
}
// System.out.println(sum);
char
[]
pwd
=
new
char
[
len
];
for
(
int
i
=
0
;
i
<
len
;
i
++)
{
int
temp
=
(
i
+
sum
+
is
[
i
])
%
26
+
97
;
// System.out.println(temp);
pwd
[
i
]
=
(
char
)
temp
;
// System.out.println(pwd[i]);
// System.out.print(new Character(pwd[i]).toString());
}
System
.
out
.
println
(
String
.
valueOf
(
pwd
));
return
null
;
}
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论