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

Passwords 已知长度的十六进制密码容易破解吗?,passwords,hex,cracking,Passwords,Hex,Cracking,我有以下PHP代码: $password = bin2hex (openssl_random_pseudo_bytes (16)); 它会生成如下随机密码: fe6fdebf293e5ec5214cc33fbc632d77 我的问题很简单,如果十六进制使用16个不同的字符,并且密码长度为32个字符,那么这个密码的可能组合数是16^32吗?或者是16^16,因为OpenSSL只生成16个字节 换言之,由于十六进制的性质,这样的十六进制密码是否更容易破解?一个字节(八位)有2^8种可能的组合。

我有以下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字符十六进制字符串有一对一的转换,反之亦然。

一个字节(8位)有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字符的十六进制字符串有一对一的转换,反之亦然。

谢谢你这样为我把它分解。我似乎误解了hex工作方式的一些基本原理。我在想,因为16个字节被输入,但32个字符被输出,也许有一种方法可以让猜测密码的工作以某种方式减少一半。你的解释清楚地表明事实并非如此。谢谢你这样为我把它分解。我似乎误解了hex工作方式的一些基本原理。我在想,因为16个字节被输入,但32个字符被输出,也许有一种方法可以让猜测密码的工作以某种方式减少一半。你的解释清楚地表明情况并非如此。