news 2026/5/20 13:38:09

写算法宠物防丢牌信息,加密雕刻,隐私不泄露,输出:扫码才显示信息,防骚扰。

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
写算法宠物防丢牌信息,加密雕刻,隐私不泄露,输出:扫码才显示信息,防骚扰。

一、 实际应用场景描述

场景:你在激光加工实训室,接到一个定制订单——制作宠物防丢牌。

传统方案:直接在金属牌上激光刻印 “姓名+电话”。

隐患:一旦丢失,捡到者可以直接联系你(好事),但也可能被别有用心的人利用(坏事),或者你的号码被路人无意看到。

本方案:我们在狗牌上只雕刻一个黑白分明的二维码。路人扫码,会跳转到一个页面,但该页面不包含明文信息。只有通过“暗号”(预设的解密密钥)才能显示出主人的联系方式。

二、 引入痛点

1. 隐私裸奔:传统的激光刻字是将信息永久暴露在物理世界,无法撤回或修改。

2. 防骚扰需求:宠物爱好者不希望因为丢一次狗就暴露全部社交资料。

3. 激光二维码雕刻难点:普通二维码密度大,激光雕刻时容易糊在一起;需要生成低密度、大容错的专用二维码。

三、 核心逻辑讲解

本项目的核心是 “非对称验证 + 物理载体”。

1. 数据加密(Encryption):使用

"cryptography" 库对主人的电话号码进行加密。只有拥有“密钥”的人才能解密。

2. URL 编码(Encoding):将加密后的数据作为一个 URL 参数,生成一个二维码。

3. 激光工艺适配(Laser Adaptation):生成二维码时,强制设置

"error_correction" 为高容错率(H级),并增大模块间距(

"box_size"),确保激光切割出的孔洞清晰可辨,不会连成一片。

4. 验证流程:扫描 → 跳转网页 → 输入密钥 → 解密显示。

四、 代码模块化实现 (Python)

我们将代码分为四个模块:

"crypto_utils.py"(加密)、

"qr_generator.py"(二维码生成)、

"config.py"(工艺参数)、

"main.py"(主流程)。

1. 加密工具 (

"crypto_utils.py")

# crypto_utils.py

from cryptography.fernet import Fernet

import base64

import os

class CryptoManager:

"""

加密管理器

核心知识点:对称加密 (Symmetric Encryption)

使用 Fernet (AES + HMAC),适合小数据量的快速加密

"""

def __init__(self, key: bytes = None):

# 如果没有传入key,则生成一个新的key

self.key = key or Fernet.generate_key()

self.cipher_suite = Fernet(self.key)

def encrypt(self, plaintext: str) -> str:

"""

加密明文数据

返回 Base64 编码的字符串,适合放在URL中

"""

byte_text = plaintext.encode('utf-8')

encrypted_data = self.cipher_suite.encrypt(byte_text)

# 转换为URL安全的Base64字符串

return base64.urlsafe_b64encode(encrypted_data).decode('utf-8')

def decrypt(self, ciphertext: str, key: bytes) -> str:

"""

解密数据

"""

cipher_suite = Fernet(key)

decoded_data = base64.urlsafe_b64decode(ciphertext.encode('utf-8'))

decrypted_data = cipher_suite.decrypt(decoded_data)

return decrypted_data.decode('utf-8')

def get_key(self) -> str:

"""获取密钥字符串,用于分享给信任的人"""

return self.key.decode('utf-8')

2. 二维码生成 (

"qr_generator.py")

# qr_generator.py

import qrcode

from config import *

class QRCodeGenerator:

"""

激光雕刻专用二维码生成器

核心知识点:二维码纠错机制 (Error Correction)

"""

def __init__(self):

# 初始化二维码对象

# error_correction 设为 H (High) 最高容错率

# 这样即使激光雕刻边缘有点毛刺,二维码依然能被扫出来

self.qr = qrcode.QRCode(

version=1, # 固定版本,便于控制密度

error_correction=qrcode.constants.ERROR_CORRECT_H,

box_size=LASER_BOX_SIZE, # 激光雕刻专用:增大每个模块的像素点

border=4,

)

def generate_qr_code(self, data: str, output_filename: str):

"""

生成二维码图片

参数:

data: 要编码的数据 (通常是加密后的URL)

output_filename: 输出文件名

"""

self.qr.clear()

self.qr.add_data(data)

self.qr.make(fit=True)

# 生成图像,使用黑白高对比度

img = self.qr.make_image(fill_color="black", back_color="white")

# 保存为SVG矢量图,激光切割机最爱

img.save(output_filename, format='SVG')

print(f"✅ 激光雕刻文件已生成: {output_filename}")

3. 配置文件 (

"config.py")

# config.py

# --- 激光加工参数 ---

# 激光雕刻二维码时,box_size越大,线条越粗,越不容易糊

LASER_BOX_SIZE = 10

# 输出文件名

OUTPUT_SVG_FILE = "pet_tag_qr.svg"

# --- 网络服务配置 ---

# 这是一个示例URL,实际使用时你需要部署一个简单的Web服务

# 例如: https://yourdomain.com/decrypt?data=

DECRYPTION_SERVICE_URL = "https://example.com/decrypt?token="

4. 主程序 (

"main.py")

# main.py

from crypto_utils import CryptoManager

from qr_generator import QRCodeGenerator

from config import *

def main():

print("🐾 欢迎使用 CryptoPetTag 生成器 🐾")

# 1. 输入主人隐私信息

owner_phone = input("请输入主人的联系电话 (仅用于加密存储): ")

owner_name = input("请输入宠物名字 (可选): ")

# 2. 加密数据

crypto_mgr = CryptoManager()

encrypted_payload = crypto_mgr.encrypt(f"phone:{owner_phone}|name:{owner_name}")

# 3. 构造完整的URL

full_url = f"{DECRYPTION_SERVICE_URL}{encrypted_payload}"

print("\n🔑 加密密钥 (请务必保存好,这是找回宠物的唯一凭证):")

print(f" {crypto_mgr.get_key()}")

# 4. 生成二维码

qr_gen = QRCodeGenerator()

qr_gen.generate_qr_code(full_url, OUTPUT_SVG_FILE)

print("\n🎉 生成完毕!请将 SVG 文件导入激光切割软件进行雕刻。")

if __name__ == "__main__":

main()

五、 README 文件与使用说明

# CryptoPetTag

> 一款结合激光雕刻与数据加密技术的宠物防丢牌生成工具。

> 隐私第一,扫码才显真身。

## 🛡️ 工作原理

1. **雕刻阶段**:程序生成一个二维码,内容是一个加密字符串。

2. **扫码阶段**:路人扫描狗牌上的二维码,跳转到你的解密网页。

3. **验证阶段**:路人输入你告知的“暗号”(密钥),才能看到你的联系方式。

## 🛠️ 安装依赖

bash

pip install cryptography qrcode[pil]

## 🚀 使用流程

1. 运行 `python main.py`。

2. 输入你的电话和宠物名。

3. 程序会输出一个 **SVG 文件** 和一个 **密钥**。

4. 将 SVG 文件导入激光切割机,雕刻在金属/亚克力牌子上。

5. **妥善保存密钥!**

## ⚠️ 重要提示

本项目仅为示例。**实际生产环境**中,你需要配合一个后端服务(如 Flask/Django)来处理解密逻辑,不能在前端暴露解密算法。

六、 核心知识点卡片

知识点 说明 在本项目中的应用

Fernet 加密

"cryptography" 库中的对称加密方案 对电话号码进行高强度加密,防止明文泄露

URL Safe Base64 一种将二进制数据编码为URL参数的方法 确保加密后的乱码能安全地放进二维码里

二维码纠错等级 (ECC) L/M/Q/H 四个等级,H级可恢复约30%的数据 激光雕刻有误差,必须选 H 级保证可读性

SVG 矢量图 无损缩放的图形格式 激光切割机直接读取路径,无需栅格化

七、 总结

作为一名全栈工程师,通过这个项目,我们将网络安全的概念引入了激光加工工艺。

* 技术价值:展示了如何用 Python 的

"cryptography" 库保护物理世界的隐私。

* 产品价值:解决了宠物主人对“隐私泄露”的焦虑,提升了激光定制产品的附加值。

* 工程思维:我们不仅要考虑代码能不能跑,还要考虑激光能不能切得动(调整

"box_size" 和

"error_correction")。

记住:最好的隐私保护,是让数据在物理层面“不可读”,在数字层面“可控”。 给你的毛孩子做个高科技狗牌吧!

利用AI解决实际问题,如果你觉得这个工具好用,欢迎关注长安牧笛!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/26 0:49:57

3大突破!BiliTools视频AI智能总结让学习效率提升80%

3大突破!BiliTools视频AI智能总结让学习效率提升80% 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools Bil…

作者头像 李华
网站建设 2026/4/18 8:02:50

3步攻克黑苹果EFI配置:OpCore-Simplify让新手告别技术门槛

3步攻克黑苹果EFI配置:OpCore-Simplify让新手告别技术门槛 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 当你面对满屏的ACPI补丁术语感到…

作者头像 李华
网站建设 2026/4/18 8:02:49

手把手教你下载NASA FIRMS火点数据:VIIRS与MODIS对比实操指南

手把手教你下载NASA FIRMS火点数据:VIIRS与MODIS对比实操指南 当森林大火肆虐或农田焚烧失控时,卫星遥感数据成为监测火情的"天眼"。NASA的FIRMS系统提供的VIIRS和MODIS火点数据,就像两位不同焦距的观察者——一位手持高倍望远镜&a…

作者头像 李华
网站建设 2026/4/21 12:24:57

本地语音识别:隐私保护转录的离线音频处理解决方案

本地语音识别:隐私保护转录的离线音频处理解决方案 【免费下载链接】buzz Buzz transcribes and translates audio offline on your personal computer. Powered by OpenAIs Whisper. 项目地址: https://gitcode.com/GitHub_Trending/buz/buzz 在当今数字化时…

作者头像 李华