大家好:我是毛華望。目前在參加紫光同創(chuàng)PGL22G開(kāi)發(fā)平臺(tái)試用。連載第8篇。
密碼設(shè)計(jì)方案:
為了方便測(cè)試,采用2層加密。1,用4個(gè)8bit作為一組密碼。分3組發(fā)送。分別是:85677943,22874026,97842901.2,時(shí)間間隔, 30秒和45秒。
如果有任何一組密碼沒(méi)有按時(shí)到來(lái),就要輸入69963338來(lái)重新激活。當(dāng)然你發(fā)送密碼的時(shí)候要是4357878869963338875434.
突然感覺(jué)用串口模擬程序加密實(shí)在和實(shí)際情況差的比較遠(yuǎn)。因?yàn)槿绻菃纹瑱C(jī)就可以實(shí)時(shí)的發(fā)送8bit的數(shù)據(jù),一直發(fā)送。而串口無(wú)法模擬,只能發(fā)一些數(shù)據(jù)就停下來(lái)。大概連續(xù)發(fā)送幾分鐘的數(shù)據(jù)吧。
Matlab做數(shù)據(jù)(excel):
Excel通用也比較容易。所以,演示用excel。
用隨機(jī)rand()*99.就能隨機(jī)生成99以內(nèi)的數(shù)據(jù)了。
復(fù)制粘貼到txt文本。
沒(méi)有任何問(wèn)題。然后用串口發(fā)送。
發(fā)送的數(shù)據(jù)也沒(méi)有任何問(wèn)題。我用excel做了50萬(wàn)的數(shù)據(jù)量。發(fā)送的話5分鐘。
因?yàn)榇谑怯袝r(shí)間的,所以,只要把85677943,22874026,97842901.這3個(gè)密碼插入到差不多的時(shí)間位置上就可以了。為了安全起見(jiàn),你可以試一下有沒(méi)有數(shù)據(jù)和密碼相同。
把85677943放進(jìn)了開(kāi)頭。第2個(gè)要放在20—30秒的位置上。
時(shí)間大概是22:57:4 的位置上。
插入到這個(gè)位置上。
這個(gè)地方添加密碼2 。22874026。
在之后的30—45秒內(nèi),添加密碼3 。97842901
準(zhǔn)備工作已經(jīng)做完。開(kāi)始寫(xiě)FPGA程序。
FPGA程序
輸入密碼是要的。
統(tǒng)計(jì)連續(xù)進(jìn)入的4個(gè)8bit的數(shù)據(jù)。
Signalvalid信號(hào)作為有效信號(hào)。如果說(shuō)密碼一直是對(duì)的,那么會(huì)一直亮。如果這個(gè)信號(hào)為0,led燈就會(huì)滅。
計(jì)數(shù)器1s。1s就有1個(gè)標(biāo)志位。
Clc_time時(shí)間清0用的。 只要密碼到了時(shí)間就會(huì)清0.如果密碼沒(méi)到就會(huì)一直計(jì)數(shù)下去。統(tǒng)計(jì)經(jīng)過(guò)了多少秒。
狀態(tài)0的時(shí)候。剛上電。15秒內(nèi)免費(fèi)點(diǎn)亮。Signal_valid是1,表示可以正常使用。
如果15秒內(nèi),輸入密碼85677943,就可以繼續(xù)使用。 并且clc_time把時(shí)間清除一下,然后繼續(xù)統(tǒng)計(jì)時(shí)間。
如果超過(guò)15秒,沒(méi)有輸入密碼呢?
就必須輸入:69963338就可以激活了。回到狀態(tài)0.當(dāng)然輸入的時(shí)候要輸入4357878869963338875434默認(rèn)前面有一堆數(shù),后面有一堆數(shù)。
狀態(tài)1,就是30秒內(nèi)輸入密碼:22874026。 進(jìn)入狀態(tài)2.如果30秒內(nèi)沒(méi)有輸入密碼,進(jìn)入狀態(tài)3.
狀態(tài)2,情況一樣的。
最后拿著生成的數(shù)據(jù),用串口發(fā)送試一下。可以了。
總結(jié):
為了模擬,我采用了比較簡(jiǎn)單的加密。不要去問(wèn)太多為什么。比如說(shuō):為何不選擇時(shí)間區(qū)間,為何跳出死區(qū)就用了一節(jié)數(shù)據(jù)等。不符合現(xiàn)實(shí)使用的疑問(wèn)。因?yàn)檫@里只是模擬簡(jiǎn)單的加密過(guò)程。現(xiàn)實(shí)使用會(huì)復(fù)雜很多。
你好: 我是毛華望。加密的程序就這樣完成了。謝謝觀看。