通过 fxxd -p 管道传输的 openssl sha256 二进制摘要在多行上输出
openssl sha256 binary digest piped through fxxd -p is output on multiple lines
我使用这个命令给我 openssl 的输出,没有 (stdin)= 开头。
openssl x509 -noout -modulus -in certfile.crt | openssl sha1 -binary | xxd -p
有输出
7857b35259019acc7484201958ac7e622c227b68
如果我更改 openssl 以创建 sha256 摘要,xxd 会将其打印成两行
openssl x509 -noout -modulus -in certfile.crt | openssl sha256 -binary | xxd -p
有输出
b274c19ac31cc7893dc2297804a2ca666fe168d5cd5eb4d4b6c47616bad9
8996
如何在第一行写输出?
b274c19ac31cc7893dc2297804a2ca666fe168d5cd5eb4d4b6c47616bad98996
既然摘要更长了,还是我需要用 xxd 做其他事情,或者是否需要通过其他命令将其通过管道传输以获得组合输出?
和往常一样,有几种方法。
我想到的第一个通用解决方案是:
printf "%s" $( openssl x509 -noout -modulus -in certfile.crt | openssl sha256 -binary | xxd -p )
当然,如果输出小于256,你可以使用tshiono所说的xxd -f -c 256
。
针对 openssl
这种特殊情况的另一种解决方案是:
openssl x509 -noout -modulus -in certfile.crt | openssl sha256 -r
或
openssl x509 -noout -modulus -in certfile.crt | openssl sha256 -hex
但两者都不完全像您想要的输出。十六进制字符串在输出中,但在可以 cut
之前或之后填充,通过管道连接到命令 cut -d" " -f 1
或 cut -d" " -f 2
以删除前缀或后缀。
我使用这个命令给我 openssl 的输出,没有 (stdin)= 开头。
openssl x509 -noout -modulus -in certfile.crt | openssl sha1 -binary | xxd -p
有输出
7857b35259019acc7484201958ac7e622c227b68
如果我更改 openssl 以创建 sha256 摘要,xxd 会将其打印成两行
openssl x509 -noout -modulus -in certfile.crt | openssl sha256 -binary | xxd -p
有输出
b274c19ac31cc7893dc2297804a2ca666fe168d5cd5eb4d4b6c47616bad9
8996
如何在第一行写输出?
b274c19ac31cc7893dc2297804a2ca666fe168d5cd5eb4d4b6c47616bad98996
既然摘要更长了,还是我需要用 xxd 做其他事情,或者是否需要通过其他命令将其通过管道传输以获得组合输出?
和往常一样,有几种方法。 我想到的第一个通用解决方案是:
printf "%s" $( openssl x509 -noout -modulus -in certfile.crt | openssl sha256 -binary | xxd -p )
当然,如果输出小于256,你可以使用tshiono所说的xxd -f -c 256
。
针对 openssl
这种特殊情况的另一种解决方案是:
openssl x509 -noout -modulus -in certfile.crt | openssl sha256 -r
或
openssl x509 -noout -modulus -in certfile.crt | openssl sha256 -hex
但两者都不完全像您想要的输出。十六进制字符串在输出中,但在可以 cut
之前或之后填充,通过管道连接到命令 cut -d" " -f 1
或 cut -d" " -f 2
以删除前缀或后缀。