标题: 求助大神 虚位密码技术 51单片机密码锁相关 [打印本页]

作者: 五彩叻叻猪    时间: 2023-12-12 00:28
标题: 求助大神 虚位密码技术 51单片机密码锁相关
基础的密码锁已经做好了(89c52主控,矩阵键盘输入,LCD1602显示,步进电机模拟开锁,24C02储存密码),目前正确密码设置的是unsigned int类型的四位密码,键盘输入密码设置的是unsigned long类型的十位数据,想要加入虚位密码技,研究半天,代码始终是敲不顺,有没有大佬能指点一下,给个编程思路,要是可以给例程参考就再感激不过了,感谢贴吧各位大佬!!!虚位密码技术要求:不管使用者在正确密码之前、之后加几位数,只要中间有连续正确的密码,就能解锁。

作者: szb314    时间: 2023-12-12 08:21
思路不是很简单嘛,自己好好想想,别人说明白了就不香了
作者: wufa1986    时间: 2023-12-12 08:49
这不就是一个字符串截取检查那,string.h有现成的函数,根本不需要自己写
作者: carpcarey    时间: 2023-12-12 12:55
密码用一个数组表示unsigned char pass[n];//密码n个数字。初始一个密码比对指针PassIndex=0;输入的键值和pass[PassIndex]比较,如一致,则PassIndex++;否则PassIndex=0;然后判断PassIndex是否>=n,如果>=n表示密码正确。否则继续等待输入。
作者: zyx123    时间: 2023-12-12 15:38
用strcmp函数就行了,C语言自带的函数
作者: lkc8210    时间: 2023-12-12 16:03
  1. while(Pass_L)
  2. {
  3.         int PassTemp = Pass_L%10000;
  4.         if(PassTemp == Pass_I)
  5.         {
  6.                 PassCheck = 1;
  7.                 break;
  8.         }
  9.         Pass_L/=10;
  10. }
复制代码

作者: Y_G_G    时间: 2023-12-13 12:42
使用字符串查找函数,只要有相同的就可以
但这种密码好像也不好吧
比如,你密码是 123
那么,0123可以,1234也可以,9955123也可以?
作者: man1234567    时间: 2023-12-18 08:51
zyx123 发表于 2023-12-12 15:38
用strcmp函数就行了,C语言自带的函数

这个函数是两两比对,strstr是找一串字符在另一个字符串中有无存在。
作者: 人中狼    时间: 2023-12-18 09:09
Y_G_G 发表于 2023-12-13 12:42
使用字符串查找函数,只要有相同的就可以
但这种密码好像也不好吧
比如,你密码是 123

就是这个意思,目的就是让看见你按密码的人不知道真密码是什么,密码结尾也可以有其他数字
作者: man1234567    时间: 2023-12-18 09:22
除密码开锁外,已成熟的技术包括指纹、面容、远程遥控等,还有高级的如声纹等,还有传统的钥匙。
个人感觉所谓的虚位密码技术玩玩可以卖就是智商产品。如果你家门口有头,回放就可以找出密码(无所谓的除非你的是动态密码会变),如果是你开锁时常常处于被紧盯的状态呵呵直接110比这个东东好使。另外从技术上说理论上疑似比没有更呵呵,比如你设置成错入三次密码就上锁三十分钟的话,非固定位的虚位密码貌似可狂增猜对的可能性,而固定位的则是以给自己找麻烦求心理安慰。
实现的思路很多,例几个供参考:
1、非固定位:当输入的字符与密码的首字相同时开始逐一比对否则放弃,全对后可设开锁标志位,可随便按(可设定固定几位结束,或#或*键或某特定键结束),等结束标志出现后根据标志位操作;
2、固定位:只记录事先约定的固定位比对密码,全对后可设开锁标志位,然后在约定结束指令后操作;
3、字符比对或数字比对,接收键盘一切字符(或数字)包括无用字符,在约定结束指令后找其中有无密码字符串(或数字)的存在,然后根据标志位操作,这个呵呵你懂的。
作者: IdeaMing    时间: 2023-12-18 09:56
个人思路:
1.监控每一次输入的按键值,当遇到第一个和密码第一位一致时,开始监控下一个按键值,如果,下一个按键值和密码第二位一样,则继续监控下一个按键值是否和密码第三位是否一致,直到密码全部正确,标记已经成功输入密码,中间出现任何一位不对,就从新对比第一位密码。等待按键输入超时或者用户确认密码,即可根据是否成功输入密码的标记来决定是否开锁。
2.这样密码基本可以无限长随便输入,无需很长的buff存储输入的密码内容。

作者: 五彩叻叻猪    时间: 2023-12-19 19:31
szb314 发表于 2023-12-12 08:21
思路不是很简单嘛,自己好好想想,别人说明白了就不香了

感谢,确实是这样,我想了一下换成数组储存密码之后问题就迎刃而解了




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1