已知长度的十六进制密码是否容易破解?

Are hex passwords of a known length easy to crack?

我有以下 PHP 代码:

$password = bin2hex (openssl_random_pseudo_bytes (16));

它会生成这样的随机密码:

fe6fdebf293e5ec5214cc33fbc632d77

我的问题很简单,鉴于十六进制使用 16 个不同的字符并且密码的长度为 32 个字符,此密码的可能组合数是否为 16^32?或者它是 16^16,因为 OpenSSL 只生成了 16 个字节?

换句话说,由于十六进制的性质,像这样的十六进制密码是否更容易被破解?

一个字节(八位)有 2^8 种可能的组合。 16 个字节(8*16 位)有 2^(8*16) = 2^128 种可能的组合。

以任何形式(纯二进制、十六进制字符串、十进制、base64 编码二进制等)表示这些组合不能改变可能组合的数量。

如果你用另一种方式来计算它们也没关系。 32位十六进制字符串具有相同的组合数:

32 个字符,每个字符有 16 个变体 = 16^32 = (2^4)^32 = 2^(4*32) = 2^128.

这并不奇怪,因为存在从 16 字节到 32 字符十六进制字符串的一对一转换,反之亦然。