版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、VHDL搶答器的設(shè)計(jì)設(shè)計(jì)要求:1.搶答器同時(shí)供N名選手,(此處假設(shè)4個(gè))分別用4個(gè)按鈕S0 S3表示。2.設(shè)置一個(gè)系統(tǒng)“開(kāi)始復(fù)位”開(kāi)關(guān)S,該開(kāi)關(guān)由主持人控制(當(dāng)主持人按下該開(kāi)關(guān)后以前的狀態(tài)復(fù)位并且開(kāi)始計(jì)時(shí)搶答)。3搶答器具有鎖存與顯示功能。即選手按動(dòng)按鈕,鎖存相應(yīng)的編號(hào),并在LED數(shù)碼管上顯示,同時(shí)揚(yáng)聲器發(fā)出報(bào)警聲響提示。選手搶答實(shí)行優(yōu)先鎖存,優(yōu)先搶答選手的編號(hào)一直保持到主持人將系統(tǒng)清除為止。4. 搶答器具有定時(shí)搶答功能,且一次搶答的時(shí)間(0-99S)。當(dāng)主持人啟動(dòng)“開(kāi)始復(fù)位”鍵后,定時(shí)器進(jìn)行減計(jì)時(shí)。5. 如果定時(shí)時(shí)間已到,無(wú)人搶答,本次搶答無(wú)效,系統(tǒng)報(bào)警并禁止搶答,定時(shí)顯示器上顯示00。一、
2、概述 搶答器的邏輯結(jié)構(gòu)主要由搶答鑒別lock模塊、定時(shí)模塊、譯碼模塊和報(bào)警器模塊組成。在整個(gè)搶答器中最關(guān)鍵的是如何實(shí)現(xiàn)搶答封鎖,在控制鍵按下的同時(shí)計(jì)數(shù)器倒計(jì)時(shí)顯示有效剩余時(shí)間。除此之外,整個(gè)搶答器還需有一個(gè)“復(fù)位開(kāi)始”信號(hào),以便搶答器能實(shí)現(xiàn)清零和開(kāi)始。搶答器共有3個(gè)輸出顯示,選手代號(hào)、計(jì)數(shù)器的個(gè)位和十位,他們輸出全都為BCD碼輸出,這樣便于和顯示譯碼器連接。當(dāng)主持人按下控制鍵、選手按下?lián)尨疰I蜂鳴器短暫響起。方案設(shè)計(jì)與論證嘿嘿!將該任務(wù)分成N個(gè)模塊進(jìn)行設(shè)計(jì),分別為:搶答器鑒別模塊、搶答器計(jì)時(shí)模塊、譯碼模塊、報(bào)警模塊,最后是綜合。1. 搶答器鑒別模塊:在這個(gè)模塊中主要實(shí)現(xiàn)搶答過(guò)程中的搶答功能,并且
3、能實(shí)現(xiàn)當(dāng)有一路搶答按鍵按下時(shí),該路搶答信號(hào)將其余個(gè)綠搶答封鎖的功能。在這個(gè)模塊輸入端有WARN輸入(以時(shí)間控制系統(tǒng)的WARN輸出信號(hào)為信號(hào)源)、一個(gè)和“時(shí)間控制系統(tǒng)”公用的CLEAR端、4人搶答輸入信號(hào)端S0,S1,S2,S3和有一個(gè)時(shí)鐘信號(hào)端CLK,這個(gè)時(shí)鐘信號(hào)是個(gè)高頻信號(hào),用以掃描S0,S1,S2,S3是否有信號(hào)輸入。輸出端有對(duì)應(yīng)于S0,S1,S2,S3編號(hào)的4個(gè)指示燈LED 和4線2進(jìn)制輸出端STATES(用于鎖存當(dāng)前的狀態(tài)),還有一個(gè)STOP 端用于指示S0,S1,S2,S3按鈕狀態(tài)(控制計(jì)時(shí)器停止)。在此模塊中高頻時(shí)鐘信號(hào)一直作用,此時(shí),若主持人按下CLEAR即為開(kāi)始搶答信號(hào),所有輸
4、出端都自動(dòng)清零。在有效時(shí)間范圍(N秒)內(nèi)只要有人搶答,STOP就有高電平輸出至“時(shí)間控制系統(tǒng)”的STOP端以控制倒計(jì)時(shí)的停止,并且對(duì)應(yīng)的LCD指示燈點(diǎn)亮,STATES鎖存輸出到譯碼顯示模塊,用以顯示優(yōu)先搶答人的組號(hào),并鎖定輸入端S以阻止系統(tǒng)響應(yīng)其他搶答者的信號(hào)。當(dāng)有效時(shí)間到了之后還沒(méi)有人搶答,則記時(shí)模塊發(fā)出報(bào)警信號(hào),同時(shí)反饋回來(lái)給搶答鑒別模塊,禁止選手在搶答。2.譯碼模塊:將搶答過(guò)程中鎖存的BCD碼轉(zhuǎn)換成7段碼用于LED的顯示。3定時(shí)器模塊:這個(gè)模塊的輸入端有時(shí)鐘信號(hào)CLK1、系統(tǒng)復(fù)位信號(hào)CLEAR和一個(gè)STOP輸入信號(hào);輸出端有秒時(shí)間狀態(tài)顯示信號(hào)高位HIGH和低位LOW,無(wú)人搶答時(shí)計(jì)時(shí)中止警
5、報(bào)信號(hào)WARN。這個(gè)模塊中主要實(shí)現(xiàn)搶答過(guò)程中的計(jì)時(shí)功能,在搶答開(kāi)始后進(jìn)行N秒的倒計(jì)時(shí),并且在N秒倒計(jì)時(shí)后無(wú)人搶答的情況下顯示超時(shí)并輸出信號(hào)至WARN報(bào)警,或者只要N秒內(nèi)有人搶答,由搶答鑒別模塊輸出的STOP信號(hào)控制停止計(jì)時(shí),并顯示優(yōu)先搶答者的搶答時(shí)刻,輸出一個(gè)信號(hào)經(jīng)WARN傳至“搶答鑒別系統(tǒng)”,鎖存不再讓選手搶答。4報(bào)警模塊:在這個(gè)模塊中主要實(shí)現(xiàn)搶答過(guò)程中的報(bào)警功能,當(dāng)主持人按下控制鍵,有限時(shí)間內(nèi)(N秒內(nèi))有人搶答或是倒計(jì)時(shí)到了之后蜂鳴器開(kāi)始報(bào)警,輸出SOUND有效電平為高.5.在這個(gè)模塊中是對(duì)前4個(gè)模塊的綜合。三單元電路軟件設(shè)計(jì)及仿真1.搶答器鑒別模塊VHDL程序及模塊:在這個(gè)模塊中主要實(shí)現(xiàn)
6、搶答過(guò)程中的搶答功能,并且能實(shí)現(xiàn)當(dāng)有一路搶答按鍵按下時(shí),該路搶答信號(hào)將其余個(gè)綠搶答封鎖的功能。在這個(gè)模塊輸入端有WARN輸入(以時(shí)間控制系統(tǒng)的WARN輸出信號(hào)為信號(hào)源)、一個(gè)和“時(shí)間控制系統(tǒng)”公用的CLEAR端、4人搶答輸入信號(hào)端S0,S1,S2,S3和有一個(gè)時(shí)鐘信號(hào)端CLK,這個(gè)時(shí)鐘信號(hào)是個(gè)高頻信號(hào),用以掃描S0,S1,S2,S3是否有信號(hào)輸入。輸出端有對(duì)應(yīng)于S0,S1,S2,S3編號(hào)的4個(gè)指示燈LED 和4線2進(jìn)制輸出端STATES (用于鎖存當(dāng)前的狀態(tài)),還有一個(gè)STOP 端用于指示S0,S1,S2,S3按鈕狀態(tài)(控制計(jì)時(shí)器停止)。LIBRARY IEEE;USE IEEE.STD_LO
7、GIC_1164.ALL;ENTITY LOCK IS PORT( CLK,CLEAR:IN STD_LOGIC; WARN:IN STD_LOGIC; S0,S1,S2,S3:IN STD_LOGIC; STATES:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); STOP:OUT STD_LOGIC; LED:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END LOCK;ARCHITECTURE ONE OF LOCK ISSIGNAL G:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN PROCESS(CLEAR,CLK,S
8、0,S1,S2,S3) BEGIN IF CLEAR=1 THEN G=0000;LED=0000;STOP=0; ELSIF CLKEVENT AND CLK=1 THEN IF WARN=0 THEN IF( S3=1)AND NOT(G(0)=1 OR G(1)=1 OR G(2)=1) THEN G(3)=1;LED(3)=1; ELSIF( S2=1)AND NOT(G(0)=1 OR G(1)=1 OR G(3)=1) THEN G(2)=1;LED(2)=1; ELSIF( S1=1)AND NOT(G(0)=1 OR G(2)=1 OR G(3)=1) THEN G(1)=1;
9、LED(2)=1; ELSIF( S0=1)AND NOT(G(1)=1 OR G(2)=1 OR G(3)=1) THEN G(0)=1;LED(3)=1; END IF; STOPSTATESSTATESSTATESSTATESSTATESQOUTQOUTQOUTQOUTQOUTQOUTQOUTQOUTQOUTQOUTQOUT=0000000; END CASE; END PROCESS;END ARCHITECTURE TWO;3.定時(shí)模塊VHDL程序及模塊:這個(gè)模塊的輸入端有時(shí)鐘信號(hào)CLK、系統(tǒng)復(fù)位信號(hào)CLEAR和一個(gè)STOP輸入信號(hào);輸出端有秒時(shí)間狀態(tài)顯示信號(hào)高位HIGH和低位LOW
10、,無(wú)人搶答時(shí)計(jì)時(shí)中止警報(bào)信號(hào)WARN。這個(gè)模塊中主要實(shí)現(xiàn)搶答過(guò)程中的計(jì)時(shí)功能,在搶答開(kāi)始后進(jìn)行N秒的倒計(jì)時(shí),并且在N秒倒計(jì)時(shí)后無(wú)人搶答的情況下顯示超時(shí)并輸出信號(hào)至WARN報(bào)警,或者只要N秒內(nèi)有人搶答,由搶答鑒別模塊輸出的STOP信號(hào)控制停止計(jì)時(shí),并顯示優(yōu)先搶答者的搶答時(shí)刻,輸出一個(gè)信號(hào)經(jīng)WARN傳至“搶答鑒別系統(tǒng)”,鎖存不再讓選手搶答。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY COUNT IS PORT(CLK,CLEAR,STOP:IN STD_LOGIC; WARN:OUT
11、 STD_LOGIC; HIGH,LOW:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END COUNT;ARCHITECTURE THREE OF COUNT ISSIGNAL HS:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL LS:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(CLK) BEGIN IF CLEAR=1 THEN HS=1001;LS=1001;WARN=0; ELSIF CLKEVENT AND CLK=1 THEN LS=LS-1; IF LS=0000 THEN LS=1001;H
12、S=HS-1; IF HS=0000 AND LS=0000 THEN WARN=1;HS=0000;LS=0000; IF STOP=1 THEN HS=HS; LS=LS; WARN=1; END IF; END IF; END IF; END IF; HIGH=HS;LOW=LS;END PROCESS;END ARCHITECTURE THREE; 4報(bào)警模塊VHDL:在這個(gè)模塊中主要實(shí)現(xiàn)搶答過(guò)程中的報(bào)警功能,當(dāng)主持人按下控制鍵,有限時(shí)間內(nèi)(N秒內(nèi))有人搶答或是倒計(jì)時(shí)到了之后蜂鳴器開(kāi)始報(bào)警,輸出SOUND有效電平為高.LIBRARY IEEE;USE IEEE.STD_LOGIC_11
13、64.ALL;ENTITY ALARM IS PORT(CLEAR,WARN:IN STD_LOGIC; SOUND:OUT STD_LOGIC);END ;ARCHITECTURE FOUR OF ALARM ISBEGIN PROCESS(WARN,CLEAR) BEGIN IF CLEAR=1 THEN SOUND=0; ELSIF WARN=1 THEN SOUND=1; ELSE SOUND=0; END IF;END PROCESS;END ;設(shè)計(jì)電路的仿真波形圖1搶答鑒別模塊仿真圖:2譯碼模塊仿真圖:3記時(shí)模塊仿真圖:部分仿真圖(1):部分仿真圖(2):4報(bào)警模塊仿真圖:五主電路
14、連線圖:主電路仿真圖:六、心得與體會(huì)經(jīng)過(guò)三個(gè)星期的EDA課程設(shè)計(jì),通過(guò)不懈努力,成功地設(shè)計(jì)出了數(shù)字式四路競(jìng)賽搶答器?;厥走@幾周,雖然因?yàn)槌醮紊婕癊DA技術(shù)及MAX_PLUS軟件,對(duì)相關(guān)知識(shí)知之甚少,我們也遇到了很多困難,但是我們?cè)谶@次實(shí)習(xí)的過(guò)程中都受益匪淺,收獲頗豐,甚為欣慰。 在這次課程設(shè)計(jì)的前期,我們先系統(tǒng)地學(xué)習(xí)了EDA概論,VHDL描述語(yǔ)言和設(shè)計(jì)應(yīng)用方面的基礎(chǔ)知識(shí),使得能夠較熟練地使用MAX_PLUS軟件進(jìn)行設(shè)計(jì)開(kāi)發(fā),用原理圖輸入及VHDL語(yǔ)言等設(shè)計(jì)輸入并編譯仿真,同時(shí)我們對(duì)以往學(xué)過(guò)的理論知識(shí)有了更加透徹的理解。我們的課題為數(shù)字式四路競(jìng)賽搶答器,根據(jù)電路的特點(diǎn),我們采用層次化結(jié)構(gòu)化設(shè)計(jì),
15、將此項(xiàng)設(shè)計(jì)任務(wù)分成若干模塊,規(guī)定每一模塊的功能和各模塊之間的接口,然后再將各模塊合起來(lái)調(diào)試。在設(shè)計(jì)的過(guò)程中,遇到問(wèn)題我們先獨(dú)立思考,查找資料。到自己不能解決的時(shí)候就和其他組研究討論,向指導(dǎo)老師請(qǐng)教。這樣既提高了我們獨(dú)立發(fā)現(xiàn)問(wèn)題、分析問(wèn)題、解決問(wèn)題的能力,又很好地培養(yǎng)了交流合作的精神。但是最后的成品卻不一定與仿真時(shí)完全一樣,因?yàn)?,再?shí)際接線中有著各種各樣的條件制約著。而且,在仿真中無(wú)法成功的電路接法,在實(shí)際中因?yàn)樾酒旧淼奶匦远軌虺晒ΑK?,在設(shè)計(jì)時(shí)應(yīng)考慮兩者的差異,從中找出最適合的設(shè)計(jì)方法。本實(shí)驗(yàn)通過(guò)EDA軟件muxlus2的實(shí)現(xiàn),讓我對(duì)VHDL語(yǔ)言有了大概的了解,所以說(shuō),坐而言不如立而行,
16、對(duì)于這些電路還是應(yīng)該自己動(dòng)手實(shí)際操作才會(huì)有深刻理解。通過(guò)這次設(shè)計(jì),進(jìn)一步加深了對(duì)EDA的了解,讓我對(duì)它有了更加濃厚的興趣。特別是當(dāng)每一個(gè)子模塊編寫(xiě)調(diào)試成功時(shí),心里特別的高興。通過(guò)這次課程設(shè)計(jì)使我懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識(shí)與實(shí)踐相結(jié)合起來(lái),從理論中得出結(jié)論,才能真正為社會(huì)服務(wù),從而提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力。在設(shè)計(jì)的過(guò)程中遇到問(wèn)題,可以說(shuō)得是困難重重,這畢竟第一次做的,難免會(huì)遇到過(guò)各種各樣的問(wèn)題,同時(shí)在設(shè)計(jì)的過(guò)程中發(fā)現(xiàn)了自己的不足之處,對(duì)以前所學(xué)過(guò)的知識(shí)理解得不夠深刻,掌握得不夠牢固??偟膩?lái)說(shuō),這次設(shè)計(jì)的搶答器還是比較成功的,在設(shè)
17、計(jì)中遇到了很多問(wèn)題,最后在老師的辛勤的指導(dǎo)下,終于迎刃而解,有點(diǎn)小小的成就感,終于覺(jué)得平時(shí)所學(xué)的知識(shí)有了實(shí)用的價(jià)值,達(dá)到了理論與實(shí)際相結(jié)合的目的,不僅學(xué)到了不少知識(shí),而且鍛煉了自己的能力,使自己對(duì)以后的路有了更加清楚的認(rèn)識(shí),同時(shí),對(duì)未來(lái)有了更多的信心。經(jīng)歷數(shù)日的課設(shè)眼看塵埃落定,感覺(jué)忍不住要長(zhǎng)出一口氣。結(jié)果怎樣已然不再重要,在這幾日里,我們經(jīng)歷了階段性成功的狂喜、測(cè)試失敗后的絕望、陷入困境時(shí)的不知所措,重新投入的振作。這已經(jīng)就足夠了!嘿嘿!八、參考文獻(xiàn)1 、李國(guó)洪,沈明山:可編程邏輯器件EDA技術(shù)與實(shí)踐,機(jī)械工業(yè)出版社2、江國(guó)強(qiáng):EDA技術(shù)習(xí)題與實(shí)驗(yàn),電子工業(yè)出版社 3、曹昕燕,周風(fēng)臣,聶春燕
18、:EDA技術(shù)試驗(yàn)與課程設(shè)計(jì),清華大學(xué)出版社4、黃仁欣:EDA技術(shù)實(shí)用教程,清華大學(xué)出版社附錄資料:不需要的可以自行刪除SHA算法的實(shí)現(xiàn)C語(yǔ)言程序:#include #include /定義vector數(shù)組 #include /記錄消息using namespace std; const int NUM = 8; /一個(gè)字由32比特(或者8個(gè)16進(jìn)制數(shù))const int BIT = 512; /消息認(rèn)證碼要以512比特一組 /字常量 string H0 = 67452301; string H1 = EFCDAB89; string H2 = 98BADCFE; string H3 = 103
19、25476; string H4 = C3D2E1F0; /定義SHA1(安全哈希算法)類 class SHA1 public: /將一個(gè)字符串形式的字轉(zhuǎn)化為vector數(shù)組 vector hex_into_dec(string word); /將vector轉(zhuǎn)化為string字符串形式 string num_into_message(vector A); /兩個(gè)字X和Y的邏輯和 vector word_AND(vector A,vector B); /兩個(gè)字X和Y的邏輯或 vector word_OR(vector A,vector B); /兩個(gè)字X和Y的邏輯異或 vector word_
20、XOR(vector A,vector B); /兩個(gè)字X和Y的邏輯補(bǔ) vector word_COMPLEMENT(vector A); /兩個(gè)字X和Y的摸232整數(shù)加 vector word_ADD(vector A,vector B); /將字X循環(huán)左移s個(gè)位置 vector ROTL(vector A,int s); /SHA-1的填充方案,我們?cè)O(shè)定msg由ASCII碼組成 vectorvector SHA_1_PAD(string msg); /將SHA-1壓成以字為單位 vectorvectorvector compress(vectorvector result); /定義ft函
21、數(shù),每個(gè)ft函數(shù)都有B,C,D三個(gè)字作為輸入,并產(chǎn)生一個(gè)字作為輸出 vector Ft(int t,vector B,vector C,vector D); /定義字常數(shù)K vector K(int t); /開(kāi)始進(jìn)行SHA-1(安全Hash算法)的加密 vectorvector SHA_1(string msg); ; /將vector轉(zhuǎn)化為string字符串形式 string SHA1:num_into_message(vector A) int i; string msg = ; for(i = 0;i = 0 & Ai = 10 & Ai = 15) msg += A + (Ai -
22、10); return msg; /將一個(gè)字符串形式的字轉(zhuǎn)化為vector數(shù)組 vector SHA1:hex_into_dec(string word) int i; vector result(NUM,0); for(i = 0;i = 0 & wordi = A & wordi = F) resulti = 10 + wordi - A; return result; /兩個(gè)字X和Y的邏輯和 vector SHA1:word_AND(vector A,vector B) vector result(NUM,0); int i; for(i = 0;i NUM;i+) resulti =
23、Ai & Bi; return result; /兩個(gè)字X和Y的邏輯或 vector SHA1:word_OR(vector A,vector B) vector result(NUM,0); int i; for(i = 0;i NUM;i+) resulti = Ai | Bi; return result; /兩個(gè)字X和Y的邏輯異或 vector SHA1:word_XOR(vector A,vector B) vector result(NUM,0); int i; for(i = 0;i NUM;i+) resulti = Ai Bi; return result; /兩個(gè)字X和Y的
24、邏輯補(bǔ) vector SHA1:word_COMPLEMENT(vector A) vector result(NUM,0); int i; for(i = 0;i NUM;i+) resulti = 15 - Ai; return result; /兩個(gè)字X和Y的摸232整數(shù)加 vector SHA1:word_ADD(vector A,vector B) vector result(NUM,0); int i; for(i = NUM - 1;i = 0;i-) resulti = Ai + Bi; if(i != 0) int temp = resulti / 16; resulti-1
25、 += temp; resulti %= 16; return result; /將字X循環(huán)左移s個(gè)位置 vector SHA1:ROTL(vector A,int s) vector result = A; vector temp(NUM,0); int i,j; for(i = 0;i = 0;j-) if(resultj / 8 = 1) tempj = 1; resultj = 1; resultj %= 16; if(j NUM - 1) resultj += tempj + 1; else if(resultj / 8 = 0) tempj = 0; resultj = 1; re
26、sultj %= 16; resultNUM - 1 += temp0; return result; /SHA-1的填充方案,我們?cè)O(shè)定msg由ASCII碼組成 vectorvector SHA1:SHA_1_PAD(string msg) int len = msg.length(); int bit_num = len * 8; int i,j; int num,lest = bit_num % 512; if(lest != 0) /看消息長(zhǎng)度是否超過(guò)512字節(jié),我們需要將它補(bǔ)成512的倍數(shù) num = bit_num / 512 + 1; else num = bit_num / 51
27、2; /首先我們以8位字節(jié)為一組保存到vector里面,512比特為一組,即一組里面有64位元素 vectorvector result; result.resize(num); for(i = 0;i num;i+) resulti.resize(64); for(i = 0;i num;i+) for(j = 0;j 64 & i * 64 + j len;j+) resultij = msgi * 64 + j; /下面開(kāi)始為未夠512比特的消息分組進(jìn)行補(bǔ)長(zhǎng)度操作 if(lest != 0) int x = num - 1,last_len = lest / 8; resultxlast
28、_len = 128; /先補(bǔ)一個(gè)1 for(i = last_len + 1;i = 56) resultxj = last_l % 128; last_l /= 128; j-; return result; /將SHA-1壓成以字為單位(三維數(shù)組有點(diǎn)復(fù)雜) vectorvectorvector SHA1:compress(vectorvector result) vectorvector rr; rr.resize(result.size(); int i,j; for(i = 0;i rr.size();i+) rri.resize(128); for(i = 0;i result.s
29、ize();i+) for(j = 0;j resulti.size();j+) rri2 * j = resultij / 16; rri2 * j + 1 = resultij % 16; vectorvectorvector rrr; rrr.resize(result.size(); for(i = 0;i rrr.size();i+) rrri.resize(16); for(i = 0;i rrr.size();i+) for(j = 0;j 16;j+) rrrij.resize(8); for(i = 0;i rr.size();i+) for(j = 0;j rri.size
30、();j+) rrrij / 8j % 8 = rrij; return rrr; /定義ft函數(shù),每個(gè)ft函數(shù)都有B,C,D三個(gè)字作為輸入,并產(chǎn)生一個(gè)字作為輸出 vector SHA1:Ft(int t,vector B,vector C,vector D) vector result; if(t = 0 & t = 19) vector a1 = word_AND(B,C); vector a2 = word_AND(word_COMPLEMENT(B),D); result = word_OR(a1,a2); else if(t = 20 & t = 60 & t = 79) vecto
31、r a1 = word_XOR(B,C); result = word_XOR(a1,D); else if(t = 40 & t = 59) vector a1 = word_AND(B,C); vector a2 = word_AND(B,D); vector a3 = word_AND(C,D); vector a4 = word_OR(a1,a2); result = word_OR(a4,a3); return result; /定義字常數(shù)K vector SHA1:K(int t) vector result; if(t = 0 & t = 20 & t = 40 & t = 60
32、 & t = 79) result = hex_into_dec(CA62C1D6); return result; /開(kāi)始進(jìn)行SHA-1(安全Hash算法)的加密 vectorvector SHA1:SHA_1(string msg) vector h0 = hex_into_dec(H0); vector h1 = hex_into_dec(H1); vector h2 = hex_into_dec(H2); vector h3 = hex_into_dec(H3); vector h4 = hex_into_dec(H4); vectorvector result1 = SHA_1_PA
33、D(msg); vectorvectorvector result2 = compress(result1); int n = result2.size(); int i,j; for(i = 0;i n;i+) vectorvector W; W.resize(80); for(j = 0;j 16;j+) Wj = result2ij; for(j = 16;j 80;j+) vector a1 = word_XOR(Wj-3,Wj-8); vector a2 = word_XOR(a1,Wj-14); vector a3 = word_XOR(a2,Wj-16); Wj = ROTL(a
34、3,1); /將string轉(zhuǎn)化為vector數(shù)組 vector A = hex_into_dec(H0); vector B = hex_into_dec(H1); vector C = hex_into_dec(H2); vector D = hex_into_dec(H3); vector E = hex_into_dec(H4); for(j = 0;j 80;j+) vector a1 = ROTL(A,5); vector a2 = Ft(j,B,C,D); vector a3 = word_ADD(a1,a2); vector a4 = word_ADD(a3,E); vector a5 =
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年知識(shí)產(chǎn)權(quán)許可合同許可使用條件
- 2024年高級(jí)信息安全服務(wù)外包合同
- 2025年度數(shù)據(jù)中心布線施工與環(huán)保驗(yàn)收服務(wù)協(xié)議3篇
- 2025年度數(shù)據(jù)中心廠房股權(quán)轉(zhuǎn)讓及運(yùn)維服務(wù)合同樣本3篇
- 2024版大壩整改施工項(xiàng)目施工質(zhì)量管理合同3篇
- 2024年貨車共享平臺(tái)租賃合同
- 2024年高速路路基建設(shè)土石方工程承包協(xié)議一
- 2024年車展保險(xiǎn)服務(wù)合同
- 2024細(xì)胞研究及產(chǎn)業(yè)化應(yīng)用技術(shù)服務(wù)合同版B版
- 2024年限定商品代理經(jīng)銷權(quán)協(xié)議書(shū)版
- 內(nèi)蒙古自治區(qū)巴彥淖爾市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名居民村民委員會(huì)明細(xì)及行政區(qū)劃代碼
- 餐票模板合集
- 私募基金管理公司資產(chǎn)托管制度
- 三年級(jí)語(yǔ)文下冊(cè)教案-14 蜜蜂3-部編版
- 數(shù)字信號(hào)處理:第一章 數(shù)字信號(hào)處理概述
- 中國(guó)風(fēng)中國(guó)武術(shù)武術(shù)介紹PPT模板課件
- 兗州一中“循環(huán)大課堂教學(xué)模式”
- 藥理治療中樞神經(jīng)系統(tǒng)退行性疾病藥.pptx
- 膠原蛋白行業(yè)報(bào)告
- 養(yǎng)老機(jī)構(gòu)安全隱患排查清單、自查表、治理整改臺(tái)賬
- 壓力管道氬電聯(lián)焊作業(yè)指導(dǎo)書(shū)
評(píng)論
0/150
提交評(píng)論