Matlab代码Sha-1哈希密码

时间:2018-04-01 00:56:21

标签: matlab hash cryptography sha1 password-hash

clc;clear all;close all;
fileID = fopen('H:\dictionary.txt');
S = textscan(fileID,'%s','Delimiter','\n') ;
fclose(fileID);
S = S{1} ;
% remove empty cells
 S = S(~cellfun('isempty',S));
 n=length(S);
k=0;

 for i=1:n  
     for j=1:n
   k=k+1;
 y(k,1)=strcat(S(i),S(j))
     end
 end

这是我的sha-1哈希代码。我在for循环中遇到问题,在行中生成所有可能的组合

y(k,1)=strcat(S(i),S(j)).

运行正常。但它花了太长时间。我已经运行了这个代码2天仍未完成,因为我的字典包含超过5000个单词。请建议我一些好主意,以便更快地完成并改进并破解它。

1 个答案:

答案 0 :(得分:0)

由于你没有提供一些数据来测试代码,我创建了自己的测试数据,这是一个包含400个单词的单元格数组:

% create cell array with a lot of words
S = repmat({'lalala','bebebebe','ccececeece','ddededde'},1,100);

这是代码中的一些小变化,但对性能影响很大。

请注意,变量“y”在此处命名为“yy”,因此您只需复制并粘贴代码即可将其与现有代码进行比较:

% Preallocate memory by specifying variable and cell size
yy = cell(n^2,1);

% Measure time
tic

k = 0;
for i=1:n
    for j=1:n
        k=k+1;
        % Replace strcat() with [] and index cell content with S{i} instead
        % of indexing the cell itself with S(i)
        yy{k}=[S{i},S{j}];
    end
end

% Stop and output time measurement 
toc

根据我的示例数据,您的代码需要 7.78s 才能运行,改进和建议的代码在我的计算机上 0.23s

我建议阅读有关Preallocation的Matlab文档。