Ale*_*lds 5 sha1 xxd osx-mountain-lion macos
我使用的是 Mac OS X 10.8.2,运行xxd
v1.10 的编译副本(源代码)以及xxd
OS X 上预安装的副本。
我正在尝试通过终端中的一系列管道命令生成 Base64 编码的 SHA1 签名。
通常我会做类似以下的事情:
$ echo "foo" | openssl sha1 | xxd -p -r | base64 - > foo_sha1_signature
Run Code Online (Sandbox Code Playgroud)
该文件foo_sha1_signature
通常包含字符串 的 Base64 编码的 SHA1 哈希值foo
。
问题是xxd -p -r
不返回任何数据,因此文件foo_sha1_signature
是空的。
如果我将命令分开来查看 的输出xxd -r
,我会得到一个结果(如下所示):
$ echo "foo" | openssl sha1 | xxd -p | xxd -r
7b36c94bcdf32bee$
Run Code Online (Sandbox Code Playgroud)
但是,如果我将标准输出通过管道传输到文件,则该文件为空:
$ echo "foo" | openssl sha1 | xxd -p | xxd -r > foo_sha1_bytes
$ ls -al foo_sha1_bytes
-rw-r--r-- 1 alexpreynolds staff 0 Jan 2 23:02 foo_sha1_bytes
Run Code Online (Sandbox Code Playgroud)
如果我尝试管道标准错误,标准输出显示字节并且文件仍然为空:
$ echo "foo" | openssl sha1 | xxd -p | xxd -r 2> foo_sha1_bytes
7b36c94bcdf32bee$
Run Code Online (Sandbox Code Playgroud)
最后,如果我在 Linux 上执行所有这些操作,则xxd
可以按预期工作(我在文件中获得签名)。所以这似乎是xxd
OS X 10.8.2 中工作方式的一个错误。
是否有一个开源替代方案可以xxd
在 Mac OS X 上运行并将标准输入的字节表示形式发送到标准输出?
归档时间: |
|
查看次数: |
6739 次 |
最近记录: |