資源簡(jiǎn)介
伽羅瓦域GF(2^128)乘法器是Ghash算法(一種用于加解密系統(tǒng)散列算法)的核心部件,其速度與硬件開(kāi)銷(xiāo)決定著整個(gè)Ghash模塊的整體性能。本文通過(guò)Arash Reyhani-Masoleh 提出的一種算法,進(jìn)行分析設(shè)計(jì),然后用Verilog編程進(jìn)行仿真,最后用Synplify 進(jìn)行綜合。最后,通過(guò)與一些其他的乘法器實(shí)現(xiàn)方法相比較,可以知道,依現(xiàn)在的硬件來(lái)看也是很容易實(shí)現(xiàn)。
代碼片段和文件信息
clear
clc
%創(chuàng)建128*128矩陣L_M
L_m?=?zeros(128128);
%讀取二進(jìn)制文本文件內(nèi)容
L_str?=?textread(‘L_128.mem‘‘%s‘);
for?i?=1:128????%行
????L_count=?L_str{i1};????%保存對(duì)一行數(shù)據(jù)進(jìn)行處理
????for?j?=1:128????%對(duì)一行中的128位拆開(kāi)
????????num_L?=?L_count(j);
????????L_m(ij)?=?str2num(num_L);
????end
end
%創(chuàng)建128*128矩陣Q_M
Q_m?=?zeros(127128);
%讀取二進(jìn)制文本文件內(nèi)容
L_str?=?textread(‘Q_128.mem‘‘%s‘);
for?i?=1:127????????%行
????Q_count=?L_str{i1};????%保存對(duì)一行數(shù)據(jù)進(jìn)行處理
????for?j?=1:128????%對(duì)一行中的128位拆開(kāi)
????????num_Q?=?Q_count(j);
????????Q_m(ij)?=?str2num(num_Q);
????end
end
%創(chuàng)建128*128矩陣U_M
U_m?=?zeros(127128);
%讀取二進(jìn)制文本文件內(nèi)容
U_str?=?textread(‘U_128.mem‘‘%s‘);
for?i?=1:127????????%行
????U_count=?U_str{i1};????%保存對(duì)一行數(shù)據(jù)進(jìn)行處理
????for?j?=1:128????%對(duì)一行中的128位拆開(kāi)
????????num_U?=?U_count(j);
????????U_m(ij)?=?str2num(num_U);
????end
end
%求Qt
Qt_m?=?Q_m‘;
%求矩陣Qt與U乘
QtU_m?=?Qt_m?*?U_m;
%求L+QtU
LQtU_m?=?L_m?+?QtU_m;
b_m?=?zeros(1281);
b_m(21)?=?1;
C_m?=?LQtU_m?*?b_m;
%s=solve(‘x^128+x^7+x^2+x+1=0‘)
%s=solve(‘x^128+x^7+x^2+x+1=0‘)
%%驗(yàn)證寫(xiě)入的L矩陣是正確的
%fp?=?fopen(‘verify_L.txt‘‘wt‘);
%for?i?=1:128
%????for?j?=1:128
%????fprintf(fp?‘%s‘?num2str(L_m(ij)));
%????end
%?????fprintf(fp?‘\n‘);
%end
%fclose(fp);
%
%%驗(yàn)證寫(xiě)入的Q矩陣是正確的
%fp?=?fopen(‘verify_Q.txt‘‘wt‘);
%for?i?=1:127
%????for?j?=1:128
%????fprintf(fp?‘%s‘?num2str(Q_m(ij)));
%????end
%?????fprintf(fp?‘\n‘);
%end
%fclose(fp);
%
%%驗(yàn)證寫(xiě)入的U矩陣是正確的
%fp?=?fopen(‘verify_U.txt‘‘wt‘);
%for?i?=1:127
%????for?j?=1:128
%????fprintf(fp?‘%s‘?num2str(U_m(ij)));
%????end
%?????fprintf(fp?‘\n‘);
%end
%fclose(fp);
%驗(yàn)證Qt矩陣是正確的
%fp?=?fopen(‘verify_Qt.txt‘‘wt‘);
%?for?i?=1:128
%?????for?j?=1:127
%?????fprintf(fp?‘%s‘?num2str(Qt_m(ij)));
%?????end
%??????fprintf(fp?‘\n‘);
%?end
%?fclose(fp);
%驗(yàn)證QtU矩陣是正確的
%?fp?=?fopen(‘verify_QtU.txt‘‘wt‘);
%?for?i?=1:128
%?????for?j?=1:128
%?????fprintf(fp?‘%s‘?num2str(QtU_m(ij)));
%?????end
%??????fprintf(fp?‘\n‘);
%?end
%?fclose(fp);
%驗(yàn)證LQtU矩陣是正確的
%?fp?=?fopen(‘verify_LQtU.txt‘‘wt‘);
%?for?i?=1:128
%?????for?j?=1:128
%?????fprintf(fp?‘%s‘?num2str(LQtU_m(ij)));
%?????end
%??????fprintf(fp?‘\n‘);
%?end
%?fclose(fp);
%驗(yàn)證C矩陣是正確的
fp?=?fopen(‘verify_C.txt‘‘wt‘);
????for?j?=1:128
????fprintf(fp?‘%s‘?num2str(C_m(j)));
????end
?????fprintf(fp?‘\n‘);
fclose(fp);
?屬性????????????大小?????日期????時(shí)間???名稱(chēng)
-----------?---------??----------?-----??----
?????文件??????????0??2017-12-15?16:40??4_matrix\db\logic_util_heursitic.dat
?????文件???23333969??2017-12-15?16:50??4_matrix\db\mul_128.(0).cnf.cdb
?????文件????1084251??2017-12-15?16:50??4_matrix\db\mul_128.(0).cnf.hdb
?????文件????????422??2017-12-13?16:17??4_matrix\db\mul_128.amm.cdb
?????文件?????????89??2017-12-15?16:51??4_matrix\db\mul_128.cbx.xm
?????文件????????203??2017-12-13?16:17??4_matrix\db\mul_128.cmp.kpt
?????文件??????57890??2017-12-15?16:52??4_matrix\db\mul_128.cmp.rdb
?????文件????????208??2017-12-15?16:52??4_matrix\db\mul_128.cmp_merge.kpt
?????文件???????2807??2017-12-13?16:17??4_matrix\db\mul_128.cycloneive_io_sim_cache.45um_tt_1000mv_100c_slow.hsd
?????文件????????138??2017-12-12?17:00??4_matrix\db\mul_128.db_info
?????文件?????312594??2017-12-13?16:17??4_matrix\db\mul_128.fit.qmsg
?????文件????6479765??2017-12-15?16:50??4_matrix\db\mul_128.hier_info
?????文件????????768??2017-12-15?16:51??4_matrix\db\mul_128.hif
?????文件???????4374??2017-12-13?16:17??4_matrix\db\mul_128.idb.cdb
?????文件????????430??2017-12-15?16:50??4_matrix\db\mul_128.lpc.html
?????文件????????388??2017-12-15?16:50??4_matrix\db\mul_128.lpc.rdb
?????文件???????1060??2017-12-15?16:50??4_matrix\db\mul_128.lpc.txt
?????文件???????4712??2017-12-15?16:52??4_matrix\db\mul_128.map.bpm
?????文件?????195812??2017-12-15?16:52??4_matrix\db\mul_128.map.cdb
?????文件??????75141??2017-12-15?16:52??4_matrix\db\mul_128.map.hdb
?????文件????1116968??2017-12-15?16:52??4_matrix\db\mul_128.map.kpt
?????文件??????????4??2017-12-15?16:52??4_matrix\db\mul_128.map.logdb
?????文件???????8660??2017-12-15?16:52??4_matrix\db\mul_128.map.qmsg
?????文件???????2531??2017-12-15?16:52??4_matrix\db\mul_128.map_bb.cdb
?????文件??????15166??2017-12-15?16:52??4_matrix\db\mul_128.map_bb.hdb
?????文件??????????4??2017-12-15?16:51??4_matrix\db\mul_128.map_bb.logdb
?????文件???13551760??2017-12-15?16:50??4_matrix\db\mul_128.pre_map.cdb
?????文件?????530990??2017-12-15?16:50??4_matrix\db\mul_128.pre_map.hdb
?????文件???????1851??2017-12-14?15:48??4_matrix\db\mul_128.rpp.qmsg
?????文件?????530990??2017-12-15?16:50??4_matrix\db\mul_128.rtlv.hdb
............此處省略97個(gè)文件信息
評(píng)論
共有 條評(píng)論