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

如何在不使用流的情况下用PowerShell生成匹配Linux的字符串MD5哈希

在PowerShell中生成与Linux一致的字符串MD5哈希(不使用MemoryStream/StreamWriter)

要让PowerShell生成的MD5哈希和Linux一致,核心是对齐编码格式和字符串是否包含换行符两个关键点,无需依赖MemoryStream或StreamWriter,直接操作字节数组即可实现:

关键前提

Linux下md5sum处理字符串时:

  • 默认采用UTF-8编码转换字节
  • 使用echo "str"时会自动追加换行符\n,用echo -n "str"则不追加

场景1:对应Linux echo -n "your_string" | md5sum(无换行符)

# 定义目标字符串
$targetStr = "your_string"
# 转为UTF-8字节数组(无BOM)
$utf8Bytes = [System.Text.Encoding]::UTF8.GetBytes($targetStr)
# 计算MD5哈希
$hashBytes = [System.Security.Cryptography.MD5]::Create().ComputeHash($utf8Bytes)
# 转为小写十六进制字符串(匹配Linux输出格式)
$md5Result = ($hashBytes | ForEach-Object { $_.ToString("x2") }) -join ""

# 输出结果
$md5Result

场景2:对应Linux echo "your_string" | md5sum(带换行符)

只需在字符串末尾拼接PowerShell的换行符n即可:

$targetStr = "your_string"
$utf8Bytes = [System.Text.Encoding]::UTF8.GetBytes($targetStr + "`n")
$hashBytes = [System.Security.Cryptography.MD5]::Create().ComputeHash($utf8Bytes)
$md5Result = ($hashBytes | ForEach-Object { $_.ToString("x2") }) -join ""

$md5Result

验证示例

以字符串test为例:

  • 无换行场景:Linux输出098f6bcd4621d373cade4e832627b4f6,PowerShell脚本运行结果一致
  • 带换行场景:Linux输出d8e8fca2dc0f896fd7cb4cb0031ba249,PowerShell脚本运行结果一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 15:55:20