生成字符串,该字符串受此字符串的SHA256的前两个字节等于0

时间:2017-11-28 12:36:35

标签: linux bash random sha256

我有一个字符串s,如:

username-password-{random}

我想生成字符串s的散列SHA256,这样散列的前2个字节等于0,如:

0000afcbd546843....

所以,username-password-是固定的,我们可以随机选择{random}部分,有没有办法控制random部分以使SHA256满足该条件。

我有下面的代码bash脚本,但我已经运行了很多次,它不符合条件。

pt="0000"
counter=10000000
while [ $counter -le 20000000 ]
do
        echo $counter
        fibyte=$(echo -n ""username-password-"$counter" | sha256sum | cut -c1-4)
        if [ "$fibyte" == "$pt" ]
        then
                echo ""username-password-"$counter"
                echo =======================================================
                break
        fi
        ((counter++))

done
echo DONE

1 个答案:

答案 0 :(得分:0)

加密散列的一个重要且非常关键的属性是无法从输入预测散列操作的结果。所以不,除非某人违反SHA256,否则无法控制输出。

在获得满足约束条件的输出之前尝试不同的输入并不可行。如果你当前的代码每秒可以产生10,000次尝试(实际上它确实少得多,但是幽默我),你需要运行它1.767e68秒,这是(Wolfram Alpha to the rescue 4.1e50倍估计宇宙的年龄,以获得你想要的结果,给予或采取一些宇宙。