It's because of the form of the group order for the curves you list.
They look roughly like 2**n + 2**(n/2). So while technically possible
to end up with 161 bits, with overwhelming probability you end up with
> When printing the contents of a PEM ECC keypair file for the secp160k1/r1/r2 curves, OpenSSL says the private key is 161 bits:
> $ openssl ecparam -name secp160k1 -genkey -out test.pem
> $ openssl ec -in test.pem -text -noout
> read EC key
> Private-Key: (161 bit)
> ASN1 OID: secp160k1
> However, following "priv:", there are only 20 bytes (160 bits). Why is this?
> When printing the keypair for other curves, the number of bytes after "priv:" seem to always be the same or higher than the number of bits shown after "Private-Key:".
> Thanks in advance,
> openssl-users mailing list
> To unsubscribe: https://mta.openssl.org/mailman/listinfo/openssl-users