大家好:我是毛华望。目前在参加紫光同创PGL22G开发平台试用。连载第8篇。
密码设计方案:
为了方便测试,采用2层加密。1,用4个8bit作为一组密码。分3组发送。分别是:85677943,22874026,97842901.2,时间间隔, 30秒和45秒。
如果有任何一组密码没有按时到来,就要输入69963338来重新激活。当然你发送密码的时候要是4357878869963338875434.
突然感觉用串口模拟程序加密实在和实际情况差的比较远。因为如果是单片机就可以实时的发送8bit的数据,一直发送。而串口无法模拟,只能发一些数据就停下来。大概连续发送几分钟的数据吧。
Matlab做数据(excel):
Excel通用也比较容易。所以,演示用excel。
用随机rand()*99.就能随机生成99以内的数据了。
复制粘贴到txt文本。
没有任何问题。然后用串口发送。
发送的数据也没有任何问题。我用excel做了50万的数据量。发送的话5分钟。
因为串口是有时间的,所以,只要把85677943,22874026,97842901.这3个密码插入到差不多的时间位置上就可以了。为了安全起见,你可以试一下有没有数据和密码相同。
把85677943放进了开头。第2个要放在20—30秒的位置上。
时间大概是22:57:4 的位置上。
插入到这个位置上。
这个地方添加密码2 。22874026。
在之后的30—45秒内,添加密码3 。97842901
准备工作已经做完。开始写FPGA程序。
FPGA程序
输入密码是要的。
统计连续进入的4个8bit的数据。
Signalvalid信号作为有效信号。如果说密码一直是对的,那么会一直亮。如果这个信号为0,led灯就会灭。
计数器1s。1s就有1个标志位。
Clc_time时间清0用的。 只要密码到了时间就会清0.如果密码没到就会一直计数下去。统计经过了多少秒。
状态0的时候。刚上电。15秒内免费点亮。Signal_valid是1,表示可以正常使用。
如果15秒内,输入密码85677943,就可以继续使用。 并且clc_time把时间清除一下,然后继续统计时间。
如果超过15秒,没有输入密码呢?
就必须输入:69963338就可以激活了。回到状态0.当然输入的时候要输入4357878869963338875434默认前面有一堆数,后面有一堆数。
状态1,就是30秒内输入密码:22874026。 进入状态2.如果30秒内没有输入密码,进入状态3.
状态2,情况一样的。
最后拿着生成的数据,用串口发送试一下。可以了。
总结:
为了模拟,我采用了比较简单的加密。不要去问太多为什么。比如说:为何不选择时间区间,为何跳出死区就用了一节数据等。不符合现实使用的疑问。因为这里只是模拟简单的加密过程。现实使用会复杂很多。
你好: 我是毛华望。加密的程序就这样完成了。谢谢观看。