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