C++生成主密码口令

C++生成主密码口令,c++,hash,passwords,C++,Hash,Passwords,我想有一个程序,它有两个参数,第一个是主密码,第二个是易于记忆的字符串,与生成的密码相关。它处理这些信息并将其转换为字符串。所以我的密码不会写在任何地方,我只会记住主密码和每个密码的易于记住的字符串。比如说 get-password --master-pass Gh3vBF2d --name stackoverflow 将获取我的Stackoverflow密码 我试着用sha512做。它接受一个硬编码的salt+主密码+相关字符串,并执行60k+轮并返回哈希 这远远不够完美,因为散列是十六进制

我想有一个程序,它有两个参数,第一个是主密码,第二个是易于记忆的字符串,与生成的密码相关。它处理这些信息并将其转换为字符串。所以我的密码不会写在任何地方,我只会记住主密码和每个密码的易于记住的字符串。比如说

get-password --master-pass Gh3vBF2d --name stackoverflow
将获取我的Stackoverflow密码

我试着用sha512做。它接受一个硬编码的salt+主密码+相关字符串,并执行60k+轮并返回哈希

这远远不够完美,因为散列是十六进制的,所以它的熵很低。我希望输出由字母数字、小写和大写以及一些特殊字符组成。我试图将其转换为base64,但输出太短。不仅如此,生成的密码看起来也很相似,例如:N2Q5MjJkZWM=,N2YzNGRkYWQ=

任何人都知道我如何生成一个高熵密码,长度约为16-20个字符,并且它不能生成类似的密码。

我已经使用md5sum取得了很好的效果

命令:

echo -n Gh3vBF2d@stackoverflow | md5sum | cut --bytes=1-20
                 ^^^ domain
        ^^^ Master password
输出:

0e8dc2aa9a8d85afc267

但这和sha512的问题是一样的。它只包含字母a-f和数字,没有大写。@Iron96,很容易混合成这种大小写。但是,如果仅包含字母a-f的限制不可接受,您可以忽略我的建议。