# EvtDoor
一、项目概述
在传统的门禁系统中,对于出入人员的管理,主是是通过刷卡、指纹、虹膜、或是人工授权等工作。在传统的门禁管理系统中,对于内部员工管理十分方便,而且功能完善,尤其是近几年的互联网快速发展,越来越多的中小企业开始安装自己的门禁系统,实现对企内工作人员的出入自动化管理。针对上述传统门禁的不足之处和对区块链技术的掌握和探索,我们拟采用区块链中通证验证的思想设计门禁系统,利用区块链中生成并发行的通证二维码来描述身份信息,通过区块链技术对二维码解析,通过调用共链上的相关信息来验证通证的有效性。这样能够对中心身份验证机制进行改进,实现去中心安全服务。
二、项目特色
1. 采用二维码通证的方式来验证门禁系统,用户能够通过移动终端软件来生成,相对于传统门禁系统更加方便。
2. 系统的设计是基于区块链的相关技术做的二次开发,系统相对于市面上的其他同类型软件来说,比较安全。
3. 通过对通证的权限进行相关设置,能够实现对已经发行通证的销毁,管理方便。
4. 通过通证生成的二维码具有实时更新的动态效果,每个二维码验证具有时效性,相对于传统的验证方式更加安全。
三、作品安装说明
1. 硬件方面:树莓派3B+、UPS不间断电源、电磁锁、电磁继电器、摄像头。
通过树莓派部署门禁系统运行需要的环境,将摄像头连接在树莓派上,能够通过树莓派调用摄像头扫描服务,然后树莓派能够通过扫描的结果来控制电磁锁,其中为防止断电,我们采用UPS不间断电源为整个系统供电。
2. 软件方面:基于Everitoken开发的钱包、基于Everitoken开发的门禁控制系统。
用户可以直接在自己的移动终端上下载基于Everitoken二次开发的EVT钱包,通过钱包里验证通证的功能使用们系统系统的服务,在树莓派上部署基于Everitoken二次开发的门禁系统,能够实现通过验证结果来控制电磁锁的功能。
四、设计思路
1. 用户使用移动设备中基于Everitoken二次开发的钱包软件,生成通证,并发布在区块链的公链上。
2. 通过门禁系统对来访的用户手中的二维码,通过调用公链上已经存在的通证进行验证,并将验证的结果反馈给门禁系统,由门禁系统确定是否打开电磁锁。
采用区块链中非对称加密的方法生成通证,根据通证的内容生成二维码,并且通过二维码我们不能够解析出任何与用户个人信息有关的内容,能够保证系统的安全性。树莓派上部署的门禁系统通过对用户持有的通证进行验证,验证的方法试通过调用共链上的信息执行的,基于区块链的安全性,通证具有不可伪造的安全特性。
五、代码实现(部分)
树莓派调用摄像头服务:
private static String qrcode = "/home/pi/image/image.jpg";
private static String[] cmdOrder = {"sh", "-c", "raspistill -w 500 -h 500 -o " + qrcode};
public static boolean photo() {
try {
Process process = Runtime.getRuntime().exec(cmdOrder);
process.waitFor();
InputStream inputStream = process.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String str = null;
while((line = bufferedReader.readLine()) != null) {
System.out.println("系统信息: (Take photo) " + str);
}
} catch (InterruptedException exception) {
return false;
} catch (IOException exception) {
return false;
}
return true;
}
通过树莓派控制继电器:
public static void OpenDoor(GpioPinDigitalOutput gd) {
gd.setState(PinState.LOW); //设置低电平断电
try {
Thread.sleep(3000); //停留3秒
} catch (InterruptedException exception) {
exception.printStackTrace();
} finally {
gd.setState(PinState.HIGH);
}
}
解码实现:
public static String decodeImg(File file) throws Exception {
try {
MultiFormatReader formatReader = new MultiFormatReader();
if (!file.exists()) {
System.out.println("你要解析的内容不存在!");
return null;
}
//file->内存中的一张图片
BufferedImage image = ImageIO.read(file);
LuminanceSource source = new BufferedImageLuminanceSource(image);
BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));
QRCodeReader reader = new QRCodeReader();
Result result = null;
try {
result = reader.decode(bitmap);
return result.getText();
} catch (ReaderException e) {
e.printStackTrace();
return null;
}
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
使用Everitoken服务对字符串内容进行解析:
NetParams netParams = new MainNetNetParams(NetParams.NET.MAINNET1);
String linkID = ExplainQrCodes();
if(linkID!=null){
EvtLink.EveriPassVerificationResult epvr = new
EvtLink.EveriPassVerificationResult(true, "ZJ123456", "door10");
epvr = EvtLink.validateEveriPassUnsafe(netParams,linkID);
if(epvr.isValid()) {
System.out.println(epvr.isValid()+epvr.getDomain()+epvr.getTokenName());
if(epvr.getDomain().equalsIgnoreCase("ZJ123456")){
System.out.println("通证"+epvr.getTokenName()+"打开门禁");
OpenDoor(doorController);
continue;
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
【资源说明】 1、该资源内项目代码都是经过测试运行成功,功能正常的情况下才上传的,请放心下载使用。 2、适用人群:主要针对计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、数学、电子信息等)的同学或企业员工下载使用,具有较高的学习借鉴价值。 3、不仅适合小白学习实战练习,也可作为大作业、课程设计、毕设项目、初期项目立项演示等,欢迎下载,互相学习,共同进步!
资源推荐
资源详情
资源评论
收起资源包目录
基于区块链的二维码门禁系统源码+项目说明.zip (81个子文件)
code_30312
.classpath 474B
.settings
org.eclipse.jdt.core.prefs 587B
src
thread
PhotoTr.java 2KB
lib
junit.jar 308KB
pi4j-core-sources.jar 637KB
pi4j-device-sources.jar 262KB
pi4j-example.jar 281KB
ezmorph-1.0.6.jar 84KB
pi4j-example-javadoc.jar 606KB
Qrcode_swetake.jar 1014KB
chain-sdk-1.0.0-rc1.jar 186KB
core-2.2.jar 508KB
pi4j-device-javadoc.jar 1.32MB
chain-sdk-1.0.0-rc1-sources.jar 102KB
pi4j-core-javadoc.jar 1.27MB
javase-3.1.0.jar 38KB
chain-sdk-1.0.0-rc1-jar-with-dependencies.jar 12.42MB
mysql-connector-java-8.0.15.jar 2.04MB
core-3.1.0.jar 526KB
pi4j-gpio-extension-sources.jar 96KB
commons-lang-2.3.jar 240KB
pi4j-device.jar 229KB
pi4j-gpio-extension-javadoc.jar 313KB
pi4j-core.jar 588KB
json-lib-2.1.jar 122KB
pi4j-example-sources.jar 284KB
sqljdbc41.jar 872KB
sqljdbc4.jar 455KB
qrcode.jar 49KB
sqljdbc42.jar 871KB
commons-logging.jar 54KB
commons-collections-3.1.jar 546KB
commons-beanutils-1.7.0.jar 184KB
pi4j-gpio-extension.jar 94KB
json-lib.jar 250KB
qrcode-2.0.1.jar 116KB
qr_code
QrcodeUtil.java 3KB
QrcodeTest.java 420B
QrcodeLogo.java 2KB
dao
ControlMain.java 3KB
bin
thread
PhotoTr.class 2KB
junit.jar 308KB
pi4j-core-sources.jar 637KB
pi4j-device-sources.jar 262KB
pi4j-example.jar 281KB
ezmorph-1.0.6.jar 84KB
pi4j-example-javadoc.jar 606KB
Qrcode_swetake.jar 1014KB
chain-sdk-1.0.0-rc1.jar 186KB
core-2.2.jar 508KB
pi4j-device-javadoc.jar 1.32MB
qr_code
QrcodeTest.class 886B
QrcodeLogo.class 2KB
QrcodeUtil.class 4KB
chain-sdk-1.0.0-rc1-sources.jar 102KB
pi4j-core-javadoc.jar 1.27MB
dao
ControlMain.class 4KB
javase-3.1.0.jar 38KB
chain-sdk-1.0.0-rc1-jar-with-dependencies.jar 12.42MB
mysql-connector-java-8.0.15.jar 2.04MB
core-3.1.0.jar 526KB
pi4j-gpio-extension-sources.jar 96KB
commons-lang-2.3.jar 240KB
pi4j-device.jar 229KB
pi4j-gpio-extension-javadoc.jar 313KB
pi4j-core.jar 588KB
json-lib-2.1.jar 122KB
pi4j-example-sources.jar 284KB
sqljdbc41.jar 872KB
sqljdbc4.jar 455KB
qrcode.jar 49KB
sqljdbc42.jar 871KB
commons-logging.jar 54KB
commons-collections-3.1.jar 546KB
commons-beanutils-1.7.0.jar 184KB
pi4j-gpio-extension.jar 94KB
json-lib.jar 250KB
qrcode-2.0.1.jar 116KB
.project 380B
README.md 6KB
config 41B
共 81 条
- 1
资源评论
龙年行大运
- 粉丝: 1385
- 资源: 3960
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功