在matlab中将字符串转换为哈希值

时间:2018-04-02 14:21:42

标签: hash matlab-figure

如何在MATLAB中使用SHA / MD5散列将消息转换为散列值?是否有内置函数或任何固定代码?

3 个答案:

答案 0 :(得分:3)

matlab中没有函数来计算哈希值。但是,您可以直接从matlab调用Java(任何操作系统)或.Net(仅限Windows)功能,其中任何一个都可以实现您想要的功能。

请注意,您尚未指定字符串的编码。如果您考虑使用ASCII,UTF8,UTF16等字符串

,则哈希值会有所不同

另请注意,matlab没有160位或256位整数,因此哈希显然不是一个整数。

无论如何,使用.Net:

<强> SHA256

string = 'some string'; 
sha256hasher = System.Security.Cryptography.SHA256Managed;
sha256 = uint8(sha256hasher.ComputeHash(uint8(string)));
dec2hex(sha256)

<强> SHA1

sha1hasher = System.Security.Cryptography.SHA1Managed;
sha1= uint8(sha1hasher.ComputeHash(uint8(string)));
dec2hex(sha1)

基于Java的解决方案可以在以下链接中找到 https://www.mathworks.com/matlabcentral/answers/45323-how-to-calculate-hash-sum-of-a-string-using-java

答案 1 :(得分:0)

MATLAB的.NET类似乎是比JAVA哈希更新的新版本。
但是,这些类没有太多/任何可用的公共文档。玩了一点之后,我发现了一种根据需要指定几种哈希算法之一的方法。

“ System.Security.Cryptography.HashAlgorithm”构造函数接受哈希算法名称(字符串)。根据您传入的字符串名称,它返回不同的哈希器类(.SHA256Managed只是一种类型)。有关完整的字符串输入==>哈希字符串输出生成,请参见下面的示例。

% Available options are 'SHA1', 'SHA256', 'SHA384', 'SHA512', 'MD5'
algorithm = 'SHA1';   

% SHA1 category
hasher = System.Security.Cryptography.HashAlgorithm.Create('SHA1');  % DEFAULT

% SHA2 category
hasher = System.Security.Cryptography.HashAlgorithm.Create('SHA256');  
hasher = System.Security.Cryptography.HashAlgorithm.Create('SHA384');  
hasher = System.Security.Cryptography.HashAlgorithm.Create('SHA512');

% SHA3 category:   Does not appear to be supported

% MD5 category
hasher = System.Security.Cryptography.HashAlgorithm.Create('MD5');

% GENERATING THE HASH:
str = 'Now is the time for all good men to come to the aid of their country';
hash_byte = hasher.ComputeHash( uint8(str) );  % System.Byte class
hash_uint8 = uint8( hash_byte );               % Array of uint8
hash_hex = dec2hex(hash_uint8);                % Array of 2-char hex codes

% Generate the hex codes as 1 long series of characters
hashStr = str([]);
nBytes = length(hash_hex);
for k=1:nBytes
    hashStr(end+1:end+2) = hash_hex(k,:);
end
fprintf(1, '\n\tThe %s hash is: "%s" [%d bytes]\n\n', algorithm, hashStr, nBytes);


% SIZE OF THE DIFFERENT HASHES:
%       SHA1:  20 bytes = 20 hex codes =  40 char hash string
%     SHA256:  32 bytes = 32 hex codes =  64 char hash string
%     SHA384:  48 bytes = 48 hex codes =  96 char hash string
%     SHA512:  64 bytes = 64 hex codes = 128 char hash string
%        MD5:  16 bytes = 16 hex codes =  32 char hash string

参考: 1)https://en.wikipedia.org/wiki/SHA-1 2)https://defuse.ca/checksums.htm#checksums

答案 2 :(得分:0)

我刚刚使用了它,效果很好。

处理字符串,文件,不同的数据类型。 对于一个文件,我通过文件资源管理器将其与CRC SHA进行了比较,并得到了相同的答案。

https://www.mathworks.com/matlabcentral/fileexchange/31272-datahash