【问题标题】:How to create the smallest file possible that contains a SHA256 hash?如何创建包含 SHA256 哈希的最小文件?
【发布时间】:2015-02-17 21:21:11
【问题描述】:

我使用的是 Powershell 2.0。

我有一个包含单个 SHA256 哈希值的变量(对应于文件的哈希值,此处为 $filename):

$filename = "C:\aaa\aaa.exe"
$sha256Value = ... # The hash for $filename

我想将该值保存到文件中。这是我尝试的第一个解决方案:

$sha256Value | Out-File -FilePath ($filename + ".sha256")

文件的大小(不在磁盘上)为 134 字节。使用此命令,它会在 .sha256 文件中生成换行符。

我尝试的第二种解决方案:

[IO.File]::AppendAllText(($filename + ".sha256"),$sha256Value,[System.Text.Encoding]::UTF8)

使用第二个选项,文件大小(不在磁盘上)为 67 字节,并且也不包含换行符。

也只需删除 UTF8 编码,我就可以将文件大小缩小到 64 字节。

还有其他可以减小文件大小的解决方案吗?此外,是否可以为第一个解决方案(即使用 Out-File)获得相同的文件大小?

【问题讨论】:

  • out-file 有一个编码参数:Out-File -FilePath ($filename + ".sha256") -encoding UTF8
  • @Lee,它确实将文件大小降低到 69 字节。但是,仍然存在换行符。
  • 大多数 PowerShell cmdlet,如 Set-ContentOut-File 都会添加换行符。
  • 您是否需要文件为人类可读格式(可以在文本编辑器中打开以查看哈希数字)?
  • @Imortist,该文件不必是人类可读的。因此,如果它提供最小的文件,我会接受一个人类不可读的解决方案。

标签: powershell hash powershell-2.0 line-breaks sha256


【解决方案1】:

你可以直接写字节:

[text.encoding]::utf8.getbytes($sha256Value) | set-content ($filename + ".sha256") -encoding byte

【讨论】:

    猜你喜欢
    • 2015-12-23
    • 1970-01-01
    • 2012-12-16
    • 2020-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-10
    相关资源
    最近更新 更多