Matlab代码Sha-1散列密码
Matlab code Sha-1 hashing password
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 个单词,所以它仍然没有完成。请给我一些好点子,让我做得更快,更好的方法来改进和破解它。
由于您没有提供一些数据来测试代码,我创建了自己的测试数据,这是一个包含 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 文档。
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 个单词,所以它仍然没有完成。请给我一些好点子,让我做得更快,更好的方法来改进和破解它。
由于您没有提供一些数据来测试代码,我创建了自己的测试数据,这是一个包含 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 文档。