当前位置:首页 > 工业控制 > 电路设计项目集锦
[导读]如今,穿孔卡片已几乎被人遗忘,使用这种卡片的最后一批机器早在 80 年代就已退役。不过也有一些例外情况,一些工业设备至今仍得以保留,并且在小范围内仍在使用这种卡片。

如今,穿孔卡片已几乎被人遗忘,使用这种卡片的最后一批机器早在 80 年代就已退役。不过也有一些例外情况,一些工业设备至今仍得以保留,并且在小范围内仍在使用这种卡片。

穿孔卡片的最大缺点在于它们存储的信息量很少。过去,它们通常只有 72 个字节,而要编写一个 Fortran 或 Algol 程序就需要大量的这种卡片。不过,它们也有一些有趣的优势,比如很难被破解,而且可以由几乎坚不可摧的材料制成,比如不锈钢,也可以由非常容易损坏的材料制成,比如易溶解的纸张。

设计一张新的投币卡

从零开始制作一张新的打孔卡可以让您自行决定许多此类事项。通过光学识别技术,孔的位置非常适合 1:0 比例,因为使用 OpenCV 可以很容易地找到这些位置。对于 128 字节的大小来说,这是一个很好的值,因为您可以使用该信息级别存储一个非常安全的随机密码。大约 120x70 毫米的卡尺寸足够小,可以放在后口袋里,或者系在脖子上的漂亮项链上以确保安全存放。

在使用 OpenCV 进行处理时,进行某种错误校正或检测也是很有用的。因此,我添加了一个奇偶校验位,它可作为穿孔卡片上每个字节的校验和。至于孔的大小,我经过测试发现 3 毫米对于识别和 3D 打印来说都效果不错。

阅读一张穿孔卡片

读取卡片信息是通过一个位于暗色桌子上方 200 毫米处的罗技 920 HD 网络摄像头来完成的,该卡片由浅灰色塑料制成。在卡片上覆盖一个栅格,然后测量矩阵中每个点的颜色。如果颜色较暗,则表示有孔洞,就在矩阵中填入“1”。如果颜色为灰色,则该值为“0”。

该程序可以通过按 WASD 键来在图像上移动像素点(分别用于水平和垂直移动),并使用 IO 键进行旋转操作。还可以通过 GH 键来缩放图像。按 shift 键可以加快移动速度。对于所使用的这张卡片,生成的扫描结果如下所示。

那么它们是用来做什么的呢?

嗯,打孔卡片有很多用途呢!

•妥善保管长密码

•用作锁具中的钥匙卡

•比特币钱包

•用于教育目的,以教授计算机历史知识

•让孩子们尝试使用二进制数值,并学习数学知识

•加密密钥

一张卡能存储多少数据?

使用更大的卡片是完全可行的,或许 64 字节的容量是有可能实现的,但那样的话容量就相当于一张 A4 纸的大小了。而且还可以使用多张卡片来一起承载信息。

尽管这张卡存储了 127 位数据,但如果你只使用 94 个可打印的 ASCII 字符(字母、数字和特殊符号),那么实际的熵值仅为 105 位。而这张卡实际上有 143 位,但我的标准使用其中的 16 位来进行奇偶校验控制。即便 80 位在如今也被认为是足够安全的了。

共同的秘密?

没问题!一张卡片可以被分成若干部分,只有将这些部分组合在一起,卡片的所有者才能获得密码。除非某人只拿到了其中的一部分信息,那么这部分信息可以通过奇偶校验位计算出来。

使用里德-索罗门算法进行数据恢复与错误校正

使用奇偶校验位可以允许每个字节中有一个位丢失,但实际丢失的位数可能会更多。一种可行的方法是采用里德-索尔曼纠错技术,这种技术在很多应用中都有使用,包括“旅行者”号太空探测器。

使用 RSCodec Python 库中的 reedsolo 进行一些实验,您可以测试不同的安全级别。在卡上使用 12 个字节的数据,可以为 ECC 空间留出 4 个字节,总共为 16 个字节。这应该能够提供恢复两个完全损坏的字节或四个已知缺失字节的可能性。

将长度为 10 个字节的“helloworld”消息用 6 个纠错码字节进行编码,总共会得到 16 个字节。用 Python RS 码编码后的消息为 [104, 101, 108, 108, 111, 119, 111, 114, 108, 100, 192, 96, 126, 3, 95, 130]。一些测试表明,它确实有效,并且能够恢复丢失的位。

制作卡片

使用所提供的 Python 脚本,您可以快速以 SCAD 格式创建密钥,并将其导出为 STL 格式以用于制造。

改进型卡片,第二代

对这张卡片进行了改进并进行了读取操作,现在它的长度为 16 个字节,还包含一个校验字节,位于卡片的最后位置。

本文编译自hackster.io

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读

对于既失明又失聪的人来说,他们对世界的感知几乎完全依赖于触觉。传统的盲文学习工具通常依靠声音提示来补充触觉反馈,这使得失聪失明的学习者处于劣势。我的项目是作为我 EDES 301 课程的一部分而开发的,旨在填补这一差距,...

关键字: 微处理器 Python 电路板

当我们想到机械臂时,脑海中通常会浮现出那种僵硬的自动化场景——即那些为生产线上的重复性、毫无情感色彩的工作而设计的机器。但当我们试图让一个四轴机械臂去捕捉人类书写所具有的那种真实重量时,情况又会怎样呢?

关键字: 机器人 机械臂 Python

在工业视觉检测场景中,某汽车零部件厂商曾面临严峻挑战:基于CPU的缺陷检测系统处理单帧图像需200ms,导致生产线节拍严重受限。通过采用Vitis HLS将OpenCV算法移植至FPGA,系统性能提升至5ms/帧,检测精...

关键字: Vitis HLS OpenCV

在现代电子实验室中,示波器与逻辑分析仪是工程师的“眼睛”,但手动操作的繁琐往往成为效率瓶颈。面对成百上千次的重复测量,人工设置触发、保存截图不仅枯燥,还容易引入人为误差。此时,利用Python结合VISA库构建自动化测试...

关键字: Python VISA 示波器

我们从 IEEE 的论文《RDA:一种适用于杂乱环境中自主导航的加速无碰撞运动规划器》中复制了 RDA 规划器项目。我们提供了一个详细的步骤指南,帮助您快速重现本文中的 RDA 路径规划算法,从而在复杂环境中实现高效的障...

关键字: ROS Python RDA规划器

一款针对 4GB Jetson Orin Nano 设备进行物体检测的高性能 C++ 实现。对 YOLOv8(成功)与 YOLOv26(挑战)进行基准测试

关键字: Python 边缘计算 YOLOv8

蓝牙低功耗(BLE)设备广泛用于环境监测,但将其数据传输到云端通常需要复杂的sdk、网关或专有平台。在本教程中,我们演示了一个简单而灵活的替代方案:使用BleuIO作为USB BLE网关将BLE广告数据直接发送到Ardu...

关键字: Arduino云 蓝牙低功耗 Python

在物联网与边缘计算兴起的今天,单板计算机(如树莓派、Jetson Nano等)凭借其低功耗、高集成度的特性,成为开发者探索硬件编程的理想平台。而Python凭借其简洁的语法和丰富的库支持,成为单板计算机开发的首选语言。本...

关键字: 单板计算机 Python

物联网(IoT)和工业互联网快速发展,MQTT协议因其轻量级、低带宽消耗和发布/订阅模式,成为设备间通信的核心协议。然而,随着MQTT应用场景的复杂化,手动测试已难以满足高效验证需求,尤其是在多设备并发、异常场景模拟和性...

关键字: Python MQTT

在之前的博客文章中,我们已经看到了如何使用AMD DSP库在AMD Versal ae - ml架构上快速实现FFT。与任何项目一样,我们可能希望模拟生成的图形,以确保我们获得正确的行为。

关键字: AI引擎 Python FFT
关闭