【发布时间】:2017-09-10 17:46:17
【问题描述】:
我有一个文件,其中包含针对文件名的文件哈希。 例如,
fb7e0a4408e46fd5573ffb9e73aec021a9dcf426235c0ccfc37d2f5e09a68a23 /path/to/some/file
237e0a4408e46fe3573f239e73aec021a9dcf426235c023fc37d2f5e09a68a12 /path/to/another/file
... and so on...
我需要将哈希转换为base64 编码格式。
所以我使用了 bash 函数和 awk 的组合。
这是我写的,
#!/bin/sh
base64Encode() {
$1 | openssl base64 -A
}
awk ' { t = base64Encode $1; print t } ' file.txt
但它似乎不起作用。我正在使用hashdeep 生成哈希列表文件,而hashdeep 不支持base64 编码输出。这就是我使用openssl 的原因。
任何有关这方面的帮助或提示都会很棒!
编辑:
给定的答案有效,但我似乎遇到了其他问题。
通常cat filename | openssl dgst -sha256 | openssl base64 -A 为filename 文件提供base64 编码输出,这是绝对正确的,
和来自hashdeep 的输出匹配来自cat filename | openssl dgst -sha256 的输出。
因此,我想将上述步骤获得的输出通过管道传输到openssl base64 -A 以获取base64 输出。但是,我仍然得到与实际结果不同的值。
虽然这可能适合单独的问题,但我仍然希望对此提供任何支持。
【问题讨论】:
-
你期待什么输出?不需要文件名吗?
-
@123 我会使用文件名,但我无法使
base64编码工作。这只是一个演示代码。 -
awk 不是外壳。不能从 awk 脚本调用 shell 函数,就像不能从 awk 脚本调用 C 函数一样,反之亦然。在这种情况下,与从 shell 调用你的 shell 函数相比,awk 脚本对你完全没有任何作用 - 有什么理由不这样做吗?
-
这可行,但我正在做的仍然有错误。通常
cat filename | openssl dgst -sha256 | openssl base64 -A为filename文件提供一个绝对正确的base64编码输出,并且hashdeep的输出与cat filename | openssl dgst -sha256的输出相匹配。因此,我想将上述步骤获得的输出通过管道传输到openssl base64 -A以获取base64输出。但是,我仍然得到与实际结果不同的值。 -
Stack Overflow 是一个编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参阅帮助中心的What topics can I ask about here。也许Super User 或Unix & Linux Stack Exchange 会是一个更好的提问地方。另见Where do I post questions about Dev Ops?
标签: linux bash unix awk openssl