DIY单灯制令牌-用STC15L104E单片机和电池按键LED制作的二进制伪随机数的动态密码验证系统-全球首发讲述.docVIP

DIY单灯制令牌-用STC15L104E单片机和电池按键LED制作的二进制伪随机数的动态密码验证系统-全球首发讲述.doc

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第一代产品,由于算法存在很大的碰撞概率,只适用于便携计数器,不适用于密码学保护。 理论计数范围可无限大,实际上由于服务器搜索范围有限(可直接修改),且每次验证失败需占用大量的CPU资源和时间才能返回结果,且客户输入信息需要较长时间。 硬件准备: 单片机 STC15L104E 1片 或者其他能在3v电压启动的C51指令集的8脚以内的单片机。 更换单片机需要注意P3.4口必须支持下降沿中断,否则不能唤醒中断而不能点亮。 LED 任意颜色 1个 消耗电流越小越好,避免电池电量提前耗尽。 电阻(可选) 部分型号led需要串联电阻才能使功耗降到更低,具体阻值与led电压和电流有关。 建议加上 瓷片电容 104 和 10uf 电解电容,与电源并联,用于去除电源噪声,提高抗干扰能力。 轻触开关 1个 建议使用橡胶系列无声轻触开关,按键抖动时间更短,按键次数寿命更长。 CR2032 电池 1节 或者其他能使单片机启动电压的供电电源。 导线 若干 用来连接电路 硬件电路连接方法: LED与VCC连接在P3.5口 按键与GND连接在P3.4口 VCC与GND连接电池 下载选项: IRC频率:8Mhz (使用其他芯片型号或更改其他频率需要修改延迟时间) 若芯片支持加密程序代码建议使用该功能,避免被客户解密破解泄漏算法。 下次冷启动时,P3.0/P3.3为0/0才可下载程序: 在出厂发布前建议勾上,并且掩盖芯片型号。 低压检测电压:1.89V 建议使用在该电压以内能点亮的led,可使本产品在更低电压下正常运行。 若需要开启EEPROM保存密码功能请将相关被注释包括的代码去除注释标识符即可开启该功能,且片内必须包含EEPROM。 若使用EEPROM来保存密码数据 不能勾选 低压时禁止EEPROM操作,否则可能出现验证失败或其他错误。 采用配置PCON寄存器的方法实现超低功耗待机,若不使用EEPROM,将芯片和电池焊死,而且不用加开关。 验证按键次数过多或者失败会等待较长时间才能返回结果,搜索范围越大等待时间越长,具体处理速度及返回时间与服务器配置有关。 单片机程序准备: 按键按下,通过二进制伪随机数算法计算 ,随机产生LED常亮,闪烁状态,并且将密码数据保存到片内EEPROM中。 按键连续长按3秒以上,LED熄灭,避免LED长时间点亮导致电池电量提前耗尽。 软件准备: 产生一个与单片机一致的二进制伪随机数算法,并且客户需要一次输入多位。 验证开始后,服务器开始循环进行移位计算、搜索客户端输入的二进制密码。 搜索成功后,验证成功,并显示按键次数,最后将计算的密码位置数据保存到服务器内部数据库,下次验证从该位置继续搜索计算。 搜索失败,验证失败,不保存任何数据。 验证失败可能的原因: 1.按键未去抖,一次按键触发了多次计算。 2.电池接触不良或看门狗出现错误,导致复位。 3.算法不一致或变量类型存在错误。 4.芯片受到干扰或看门狗溢出,导致复位或其他错误。 5.按键次数超出密码搜索范围,可尝试加大密码搜索范围。 6.验证以后当前按键次数小于总按键次数,避免重复使用旧密码。 7.片内EEPROM出现错误,部分数据无法写入导致计算出错。 按键次数错误的原因: 1.伪随机数算法存在BUG,出现重复的数据。 修改算法,并且通过该算法生成一个二进制文件, 使用各种压缩软件压缩该文件,压缩率≥100% 为合格的算法。 2.客户输入的位过少,或者出现了一个极小概率的碰撞。 若软硬件存在BUG或者建议意见等问题请在楼下跟帖回复。 硬件端工作原理图: 服务端工作原理图: 硬件端电路原理图: 图中的R1、C1、C2为可选项,可以不加,最好加上,其中U1、K1、D1、B1不可不加。 图中的B1 为3v供电电池,K1为轻触开关、D1为LED发光二级管、U1为单片机芯片, C1、C2为电源滤波电容,R1为LED的限流电阻。 下面是源码: C51硬件源码(用keil编译后可直接烧写到单片机内): [code] #includereg51.h #includeintrins.h sbit led=P3^4; //LED对应IO口 sbit key=P3^5; //按键对应IO口 (该口必须支持下降沿中断) unsigned char a=0;unsigned char b=0;unsigned char c=0; unsigned char d=0;unsigned char e=0;unsigned char f=0; unsigned char g=0;u

文档评论(0)

知识宝库 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档