用于Matlab的数组,结构,单元格或文件的哈希
散列=数据散列(数据、选项等)
数据:内置类型数组(U)INT8/16/32/64、单、双(实数或复数)
字符、逻辑、单元、结构(标量或数组、嵌套)、函数\句柄。
选项:字符向量列表:
散列方法:“SHA-1”、“SHA-256”、“SHA-384”、“SHA-512”、“MD2”、“MD5”。
输出格式:“十六进制”、“十六进制”、“双精度”、“uint8”、“base64”
输入类型:
“数组”:输入[Data]的内容、类型和大小如下
考虑创建散列。嵌套单元
和结构数组是递归解析的。空数组
不同的类型回复不同的散列。
“file”:[Data]被视为文件名,并计算哈希值
对于文件内容。
'bin': [Data]是一个数字,逻辑或CHAR数组。只有
考虑数组的二进制内容,因此
e、 g.不同类型的空数组回复相同的哈希。
“ascii”:与“bin”相同,但仅为16位的8位ascii部分
考虑了Matlab字符。
哈希:字符串或数字向量。
示例:
默认值:MD5,十六进制:
DataHash ([]) % 7 de5637fd217d0e44e0082f4d79b3e73
SHA-1,Base64:
S.a=uint8([]);
S.b={1:10},struct('q',uint64(415))};
DataHash(S,'base64','SHA-1')%ZMe4eUAp0G9TDrvSW0/Qc0gQ9/A
与使用ASCII字符串的标准哈希程序的比较:
DataHash(“abc”,“sha - 256”,“ascii”)
Michael Kleder的“计算哈希”工作原理类似,但不接受结构、单元格或文件:
//www.tatmou.com/matlabcentral/fileexchange/8944
“GetMD5”的速度快2到100倍,但它只回复MD5哈希,并且需要C编译器:
//www.tatmou.com/matlabcentral/fileexchange/25921
已测试:Matlab7.7、7.8、7.13、8.6、9.1、9.5、Win7和10/64、Java:1.3、1.6、1.7
欢迎您的错误报告和增强请求。请随时向我询问Matlab6.5的版本。
PS.MD5和SHA1散列值是“断开的”:您可以构造一个具有特定散列的数据集。但要检查文件的完整性或识别一组变量,这两种方法都是可靠的。
引用为
1月(2021年)。DataHash(//www.tatmou.com/matlabcentral/fileexchange/31272-datahash),MATLAB中央文件交换。恢复.
MATLAB版本兼容性
平台兼容性
窗户 马科斯 Linux标签
致谢
灵感来自:typecast和typecastx C-mex函数,GetMD5,序列化/反序列化
受到启发的:bimac/md5sum,探索-科学的工作流管理工具,iansheret/CachePureFunction,alexludwigklein/MATLAB视频,JavaMD5,Lynx MATLAB工具箱,缓存结果,cachedcall