当前位置: 首页 > news >正文

用python程序通过指纹识别开关车门

import hashlib
import time
from typing import Dict, List

class FingerprintDatabase:
"""指纹数据库类,用于存储和验证指纹"""

def __init__(self):
# 初始化指纹数据库,键为用户名,值为指纹哈希值
self.fingerprints: Dict[str, str] = {}

def enroll_fingerprint(self, username: str, fingerprint_data: str) -> bool:
"""注册新指纹
Args:
username: 用户名称
fingerprint_data: 指纹数据

Returns:
注册成功返回 True,失败返回 False
"""
if username in self.fingerprints:
print(f"错误:用户 {username} 已注册指纹")
return False

# 对指纹数据进行哈希处理
fingerprint_hash = self._hash_fingerprint(fingerprint_data)
self.fingerprints[username] = fingerprint_hash
print(f"用户 {username} 指纹注册成功")
return True

def verify_fingerprint(self, username: str, fingerprint_data: str) -> bool:
"""验证指纹
Args:
username: 用户名称
fingerprint_data: 待验证的指纹数据

Returns:
指纹匹配返回 True,不匹配返回 False
"""
if username not in self.fingerprints:
print(f"错误:用户 {username} 未注册指纹")
return False

# 计算待验证指纹的哈希值
provided_hash = self._hash_fingerprint(fingerprint_data)
# 与数据库中存储的哈希值比较
return provided_hash == self.fingerprints[username]

def _hash_fingerprint(self, fingerprint_data: str) -> str:
"""对指纹数据进行哈希处理
Args:
fingerprint_data: 指纹数据

Returns:
指纹的哈希值
"""
# 使用 SHA-256 哈希算法
return hashlib.sha256(fingerprint_data.encode()).hexdigest()


class CarDoor:
"""车门控制类,用于控制车门的开启和关闭"""

def __init__(self):
self.is_open = False

def open_door(self) -> None:
"""打开车门"""
if not self.is_open:
self.is_open = True
print("车门已打开")
else:
print("车门已经是打开状态")

def close_door(self) -> None:
"""关闭车门"""
if self.is_open:
self.is_open = False
print("车门已关闭")
else:
print("车门已经是关闭状态")

def get_status(self) -> str:
"""获取车门状态

Returns:
车门状态描述
"""
return "开启" if self.is_open else "关闭"


class FingerprintScanner:
"""指纹扫描器类,模拟指纹扫描过程"""

def scan_fingerprint(self) -> str:
"""模拟指纹扫描过程

Returns:
扫描到的指纹数据
"""
print("请将手指放在指纹传感器上...")
# 模拟扫描过程
time.sleep(1)
print("扫描中...")
time.sleep(1)
print("扫描完成")

# 在实际应用中,这里应该是从指纹传感器获取真实数据
# 这里我们返回一个模拟的指纹数据
return f"fingerprint_data_{time.time()}"


class Car:
"""汽车类,整合指纹识别和车门控制功能"""

def __init__(self):
self.fingerprint_db = FingerprintDatabase()
self.door = CarDoor()
self.scanner = FingerprintScanner()
# 授权用户列表
self.authorized_users: List[str] = []

def register_user(self, username: str) -> None:
"""注册用户指纹
Args:
username: 用户名称
"""
print(f"开始注册用户 {username} 的指纹...")
# 模拟获取指纹数据
fingerprint_data = self.scanner.scan_fingerprint()
# 将指纹数据注册到数据库
if self.fingerprint_db.enroll_fingerprint(username, fingerprint_data):
# 注册成功后,将用户添加到授权列表
self.authorized_users.append(username)
print(f"用户 {username} 已成功注册并授权")

def unlock_door_with_fingerprint(self, username: str) -> bool:
"""使用指纹解锁车门
Args:
username: 用户名称

Returns:
解锁成功返回 True,失败返回 False
"""
if username not in self.authorized_users:
print(f"错误:用户 {username} 未被授权")
return False

print(f"用户 {username} 正在尝试解锁车门...")
# 扫描指纹
fingerprint_data = self.scanner.scan_fingerprint()
# 验证指纹
if self.fingerprint_db.verify_fingerprint(username, fingerprint_data):
print("指纹验证成功")
self.door.open_door()
return True
else:
print("指纹验证失败")
return False

def lock_door(self) -> None:
"""锁上车门"""
self.door.close_door()


def main():
"""主函数,演示指纹识别开车门系统的使用"""
car = Car()

# 注册授权用户
car.register_user("车主")
car.register_user("家人")

# 模拟不同用户尝试解锁车门
car.unlock_door_with_fingerprint("车主")

# 等待一段时间后锁上车门
time.sleep(3)
car.lock_door()

# 尝试使用未授权用户解锁
car.unlock_door_with_fingerprint("陌生人")

# 模拟家人尝试解锁
car.unlock_door_with_fingerprint("家人")


if __name__ == "__main__":
main()  

http://www.dtcms.com/a/283424.html

相关文章:

  • 开源 python 应用 开发(六)网络爬虫
  • 健康生活,从细节开始
  • 线程学习day1---基础知识+pthread_create、self、exit、cancle、join
  • pymongo库:简易方式存取数据
  • Android 15 Settings 搜索框增加暗码功能实现
  • Windows10系统上Node.js的安装及环境配置
  • lua(xlua)基础知识点记录一
  • gem install报错解析
  • 小程序中状态管理Redux
  • ROCK Robotic R3 Pro -替代L2,适配多款无人机,支持机载、手持、车载以及船载
  • DrissionPage:一款让网页自动化更简单的 Python 库
  • 使用defineExpose暴露子组件的属性和方法、页面生命周期onLoad和onReady的使用
  • 【AI论文】可追溯证据增强的视觉基础推理:评估与方法论
  • OSS文件上传解析失败,错误:文件下载失败的排查与解决
  • 61.第二阶段x64游戏实战-抓取Lua分析本地和跨图寻路
  • Harbor 和 Helm
  • 陆面、生态、水文模拟与多源遥感数据同化的实践技术应用
  • ACL实验(思科设备)
  • 游戏开发中防止“范围蔓延”
  • Oracle 数据库常见等待事件参数详解
  • YOLO算法原理
  • 2025年中国品牌全球化发展分析:中国品牌在社交渠道、电商平台及官网流量方面显著增长
  • 测试开发工作日常用的提示词分享
  • 探秘京东外卖幕后:地图轨迹技术探寻
  • Java+Ollama 本地部署 DeepSeek-R1 对话机器人:从 0 到 1 实战指南
  • 动态规划的无后效性与马尔可夫性质相似关系的说明
  • [Java安全】JDK 动态代理
  • 3D TOF 安全防护传感器
  • 低精度定时器 (timer_list) 和 高精度定时器 (hrtimer)
  • 切比雪夫距离