You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MATLAB中将字符串/消息转为SHA/MD5哈希值?是否有内置函数?

在MATLAB中生成字符串/消息的哈希值(SHA/MD5)

嘿,我来帮你搞定MATLAB里的哈希值生成问题!其实MATLAB本身就提供了直接的工具,不管是SHA系列还是MD5都能轻松实现,下面一步步给你讲清楚:

一、使用MATLAB内置hash函数(R2020b及以后版本)

从R2020b版本开始,MATLAB官方推出了hash函数,专门用来生成数据的哈希值,用法超级简单,支持MD5、SHA-1、SHA-2全系列算法。

举几个常用例子:

  • 生成MD5哈希值:
% 待哈希的字符串
inputStr = 'Hello, MATLAB Hash!';
% 调用hash函数,指定MD5算法
md5Hash = hash(inputStr, 'MD5');
% 输出结果(十六进制字符串)
disp('MD5哈希值:');
disp(md5Hash);
  • 生成SHA-256哈希值:
inputStr = 'Hello, MATLAB Hash!';
sha256Hash = hash(inputStr, 'SHA-256');
disp('SHA-256哈希值:');
disp(sha256Hash);

支持的算法参数包括:'MD5'、'SHA-1'、'SHA-224'、'SHA-256'、'SHA-384'、'SHA-512',直接替换第二个参数即可。

二、兼容旧版本MATLAB:调用Java类实现

如果你的MATLAB版本低于R2020b,没有内置的hash函数也没关系——MATLAB可以直接调用Java的加密库,同样能轻松生成哈希值。

MD5哈希实现:

inputStr = 'Hello, MATLAB Hash!';
% 获取MD5消息摘要实例
md5Digest = java.security.MessageDigest.getInstance('MD5');
% 将字符串转换为字节数组并更新摘要
md5Digest.update(uint8(inputStr));
% 生成哈希字节数组,转换为十六进制字符串
hashBytes = md5Digest.digest();
md5Hash = lower(dec2hex(hashBytes));
% 将多行十六进制拼接为完整字符串
md5Hash = strjoin(md5Hash, '');

disp('MD5哈希值:');
disp(md5Hash);

SHA-256哈希实现:

只需要把算法名称换成'SHA-256'即可,其他逻辑完全一致:

inputStr = 'Hello, MATLAB Hash!';
sha256Digest = java.security.MessageDigest.getInstance('SHA-256');
sha256Digest.update(uint8(inputStr));
hashBytes = sha256Digest.digest();
sha256Hash = lower(dec2hex(hashBytes));
sha256Hash = strjoin(sha256Hash, '');

disp('SHA-256哈希值:');
disp(sha256Hash);

解释一下:这里先把MATLAB字符串转成uint8字节数组(和Java的字节类型对应),然后通过Java的MessageDigest类生成哈希字节,再转成十六进制字符串并拼接成完整的哈希值。如果需要大写的哈希结果,去掉lower()函数即可。

额外小提示

如果需要计算文件的哈希值,MATLAB还有专门的hashfile函数,用法和hash类似,直接传入文件路径和算法名称就行,比如:

fileHash = hashfile('example.txt', 'SHA-256');

这样不管你用的是新版本还是旧版本的MATLAB,都能轻松生成需要的哈希值啦!

内容的提问来源于stack exchange,提问作者Mohoshin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:37:25