DATAHASH-Matlab数组、结构、单元格或文件的哈希
Hash = DataHash(Data, Opts,…)
数据:内置类型数组(U)INT8/16/32/64, SINGLE, DOUBLE(真实或复杂)
CHAR, LOGICAL, CELL, STRUCT(标量或数组,嵌套),function_handle。
选项:字符向量列表:
散列方法:‘sha - 1’,‘sha - 256’,‘sha - 384’,‘sha - 512’,‘MD2’,‘MD5’。
输出格式:'hex', 'hex', 'double', 'uint8', 'base64'
输入类型:
'array':输入[Data]的内容、类型和大小
用于创建散列。嵌套的细胞
和STRUCT数组递归解析。空数组
不同的类型回复不同的哈希。
'file': [Data]被视为文件名并计算哈希值
文件内容。
“bin”:[Data]是数字、逻辑或字符数组。只有
考虑数组的二进制内容,例如
例如,不同类型的空数组回复相同的散列。
'ascii':与'bin'相同,但只是16位中的8位ascii部分
考虑Matlab CHARs。
哈希:字符串或数字向量。
例子:
默认值:MD5,十六进制:
数据散列([])%7de5637fd217d0e44e0082f4d79b3e73
Base64 sha - 1:
s.a. = uint8 ([]);
S.b = {{1:10}, struct('q', uint64(415))};
DataHash(S, 'base64', 'SHA-1') % ZMe4eUAp0G9TDrvSW0/Qc0gQ9/A
与使用ASCII字符串的标准哈希程序的比较:
数据哈希('abc','SHA-256','ascii')
Michael Kleder的“Compute Hash”工作原理类似,但不接受结构体、单元格或文件:
//www.tianjin-qmedu.com/matlabcentral/fileexchange/8944
"GetMD5"要快2到100倍,但它只回复MD5哈希值,而且需要c编译器:
//www.tianjin-qmedu.com/matlabcentral/fileexchange/25921
测试:Matlab 7.7, 7.8, 7.13, 8.6, 9.1, 9.5, Win7&10/64, Java: 1.3, 1.6, 1.7
欢迎提供报告和增强请求。请随意问我关于Matlab 6.5的版本。
MD5和SHA1哈希值是"broken":你可以构造一个数据集,它有一个特定的哈希值。但要检查文件的完整性或识别一组变量,这两种方法都是可靠的。
引用作为
1月(2021)。数据散列(//www.tianjin-qmedu.com/matlabcentral/fileexchange/31272-datahash), MATLAB中央文件交换。检索.
MATLAB版本兼容性
平台的兼容性
窗户 macOS Linux标签
确认
启发:typecast和typecastx C-mex函数,GetMD5,序列化/反序列化
启发:md5sum bimac /,探索-科学的工作流管理工具,iansheret / CachePureFunction,alexludwigklein / MATLAB-Videos,JavaMD5,猞猁MATLAB工具箱,cache_results,缓存调用