资源简介
伽罗瓦域GF(2^128)乘法器是Ghash算法(一种用于加解密系统散列算法)的核心部件,其速度与硬件开销决定着整个Ghash模块的整体性能。本文通过Arash Reyhani-Masoleh 提出的一种算法,进行分析设计,然后用Verilog编程进行仿真,最后用Synplify 进行综合。最后,通过与一些其他的乘法器实现方法相比较,可以知道,依现在的硬件来看也是很容易实现。
代码片段和文件信息
clear
clc
%创建128*128矩阵L_M
L_m = zeros(128128);
%读取二进制文本文件内容
L_str = textread(‘L_128.mem‘‘%s‘);
for i =1:128 %行
L_count= L_str{i1}; %保存对一行数据进行处理
for j =1:128 %对一行中的128位拆开
num_L = L_count(j);
L_m(ij) = str2num(num_L);
end
end
%创建128*128矩阵Q_M
Q_m = zeros(127128);
%读取二进制文本文件内容
L_str = textread(‘Q_128.mem‘‘%s‘);
for i =1:127 %行
Q_count= L_str{i1}; %保存对一行数据进行处理
for j =1:128 %对一行中的128位拆开
num_Q = Q_count(j);
Q_m(ij) = str2num(num_Q);
end
end
%创建128*128矩阵U_M
U_m = zeros(127128);
%读取二进制文本文件内容
U_str = textread(‘U_128.mem‘‘%s‘);
for i =1:127 %行
U_count= U_str{i1}; %保存对一行数据进行处理
for j =1:128 %对一行中的128位拆开
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‘)
%%验证写入的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);
%
%%验证写入的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);
%
%%验证写入的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);
%验证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);
%验证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);
%验证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);
%验证C矩阵是正确的
fp = fopen(‘verify_C.txt‘‘wt‘);
for j =1:128
fprintf(fp ‘%s‘ num2str(C_m(j)));
end
fprintf(fp ‘\n‘);
fclose(fp);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 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个文件信息
- 上一篇:SteamVR1.2.3
- 下一篇:2015年美国大学生数学建模特等奖论文全集
评论
共有 条评论