有额外的状态输出,但它进入 StdErr 流。所以它进入控制台(即屏幕显示)并且不会进入管道。常规输出是“StdOut”流的一部分。该流进入管道。这对 *nix 和 Windows 也有效。
这是一个例子。
生成密钥:
C:\>openssl ecparam -name secp256k1 -genkey -noout -out secp256k1-key.pem
如果你什么都不重定向,那么两个流都会出现在屏幕上:
C:\>openssl ec -in secp256k1-key.pem -noout -text
read EC key
Private-Key: (256 bit)
priv:
00:d6:09:84:21:77:32:86:bb:5d:c9:da:30:ce:dc:
98:28:f1:f2:f2:2e:2a:9a:91:28:c3:88:b2:bb:80:
51:24:39
pub:
04:e3:4b:2c:96:44:08:18:9f:37:bb:b5:8e:44:52:
69:f4:4b:7f:a7:2a:61:9e:5a:39:1a:07:7a:d6:27:
e8:8f:83:36:fa:a6:72:e9:f5:7c:41:53:0c:b6:16:
ab:24:7a:0d:82:2c:b9:cc:2d:2b:08:38:83:e2:ac:
4e:d7:9a:09:91
ASN1 OID: secp256k1
如果你丢弃流“1”,即 StdOut,那么剩下的就是流“2”,它就是 StdErr:
C:\>openssl ec -in secp256k1-key.pem -noout -text 1>NUL
read EC key
您也可以丢弃流“2”:
C:\>openssl ec -in secp256k1-key.pem -noout -text 2>NUL
Private-Key: (256 bit)
priv:
00:d6:09:84:21:77:32:86:bb:5d:c9:da:30:ce:dc:
98:28:f1:f2:f2:2e:2a:9a:91:28:c3:88:b2:bb:80:
51:24:39
pub:
04:e3:4b:2c:96:44:08:18:9f:37:bb:b5:8e:44:52:
69:f4:4b:7f:a7:2a:61:9e:5a:39:1a:07:7a:d6:27:
e8:8f:83:36:fa:a6:72:e9:f5:7c:41:53:0c:b6:16:
ab:24:7a:0d:82:2c:b9:cc:2d:2b:08:38:83:e2:ac:
4e:d7:9a:09:91
ASN1 OID: secp256k1
至于“为什么?”:我不知道。我认为这只是 OpenSSL 命令行实用程序的众多怪癖之一。