MATLAB:矩阵的快速哈希

时间:2018-02-07 15:22:23

标签: matlab matrix hash

我正在使用DataHash(https://de.mathworks.com/matlabcentral/fileexchange/31272-datahash)来计算1500行和700000列矩阵的sha1哈希值。

此操作大约需要16秒,这会在缓存结果时产生相当大量的算法。我使用散列来保存长时间运行操作的结果,该操作将矩阵作为输入。

任何人都知道如何计算更快的哈希值?通过一些快速操作来减少矩阵也是可以的。散列矢量会更快,但由于矩阵相当庞大,我不知道如何将一个较小的替换作为散列输入。

1 个答案:

答案 0 :(得分:3)

我认为使用底层Java框架,您可以通过良好的性能改进实现相同的结果:

% Your 1500-by-700000 matrix...
A = [ ... ]; 

% Convert A into a byte array called B...
B = typecast(A(:),'uint8');
% Or, as suggested, using the undocumented function getByteStreamFromArray:
% B = getByteStreamFromArray(A);

% Create an instance of a Java MessageDigest with the desired algorithm:
md = java.security.MessageDigest.getInstance('SHA-1');
md.update(B);

% Properly format the computed hash as an hexadecimal string:
hash = reshape(dec2hex(typecast(md.digest(),'uint8'))',1,[]);