打印
[活动专区]

手机验证码功能0----移植简介与演示

[复制链接]
664|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 candao2 于 2023-4-4 10:23 编辑

#申请原创#
项目简介
    在国民mcu里计算出验证码,保证跟用户手机上收到的验证码一致,mcu里计算出的验证码是通过TOTP算法根据当前时间算出的验证码,用户手机收到的验证码也是服务器通过同样的算法算出来下发到用户手机上。
硬件设备:
         国民N32G43XCL-STB串口连接 NB-IOT模块(波特率4800)
应用场景:
         NB-IOT智能锁的验证码开锁,或者其他需要验证码进行验证的场景
         注意:因为此验证码的计算需要精确的网络时间,RTC时间精度不满足,所以必须应用在有上网模块的场景以获得精确的网络时间

移植内容
         1用于获取精确网络时间的SNTP协议(创建udp socket,发送sntp请求,接收协议数据,解析获取当前网络时间)
         2算出验证码的TOTP算法
         3mcunb模组的串口数据收发解析过程(检测模组是否注网成功,基站信号)
         4RTC把从网络获得的时间更新到本地RTC以及在每一条输出的日志时打上时间戳
         5RTT日志显示运行过程和结果
         6windows电脑上移植同样的算出验证码的TOTP算法,用来跟mcu计算出来的作比对,实际项目中,windows电脑中算出的验证码会下发到手机上。

移植步骤
         4步进行,分别写了4个移植文档。
         1移植过程与代码讲解1--RTCRTT
         2移植过程与代码讲解2--MCUNB模组串口数据的收发与解析
         3移植过程与代码讲解3--SNTP协议收发与解析
         4移植过程与代码讲解4--验证码计算

实验操作方法
1  如下图,使用国民开发板N32G43XCL-STBLPUART PA3作为RXPA4作为TX,串口连接nB模组。nb模组 5v6v供电开机,开发板连接JLINK上电,电脑上打开J-LinkRTT Viewer ,可以看到在不停的输出日志,如果业务完成,会自动停止输出日志。


2  如下图,是sntp协议通信过程运行日志,在成功获取到sntp网络时间后,更新到本地rtc时间后。更新前的rtc时间是2023-01-124,更新后的rtc时间是2023-02-279点。

3 2成功之后,会根据当前网络时间自动计算一个验证码,也可以通过按下开发板上的按键KEY2(PA5 ),每按下一次都会计算一次,可以在各个时间查看计算出的验证码,用于跟windlows电脑上计算出的验证码比对。
下图为mcu计算出的验证码,注意,因为步长设置为1分钟,所以每一分钟内计算出的验证码相同

下图为电脑上计算的验证码,双击运行TOTP.exe,可以看到在同一分钟内计算出的验证码跟mcu一致




使用特权

评论回复
沙发
tpgf| | 2023-5-4 11:14 | 只看该作者
如果是通过时间进行计算的到的话  是不是需要保证两方的时间的一致性啊

使用特权

评论回复
板凳
nawu| | 2023-5-4 11:35 | 只看该作者
NB-IOT模块串口通讯的速度上限是多少啊

使用特权

评论回复
地板
aoyi| | 2023-5-4 12:15 | 只看该作者
这种手机验证码的计算量大不大啊

使用特权

评论回复
5
zljiu| | 2023-5-4 13:11 | 只看该作者
这种验证码可以通过第三方进行截获吗

使用特权

评论回复
6
gwsan| | 2023-5-4 14:13 | 只看该作者
TOTP算法是一种从共享密钥和当前时间计算一次性密码的算法

使用特权

评论回复
7
tfqi| | 2023-5-4 14:32 | 只看该作者
由于网络延迟和不同步时钟可能导致密码接收者必须尝试一系列可能的时间来进行身份验证,因此时间戳通常以30秒的间隔增加,从而减少了潜在的搜索空间

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

5

帖子

0

粉丝