本文主要是介绍shell小技巧(十)已知随机数的md5值,反推原值,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
已知下面的字符串是通过RANDOM随机数变量md5sum|cut-c 1-8截取后的结果,反推这些字符串对应的md5sum前的RANDOM对应数字
思路:
已知random的范围(0-32767),通过遍历讲计算结果截取前8位与目标值做比对。(最差结果全部计算一遍并比对,得到结果)
以下代码来自互联网,但做了改进。红色部分是修改修改过的部分。
#!/bin/bash
a=(21029299
00205d1c
a3da1677
1f6d12dd)
j=0
for n in {0..32767}
do
random=`echo $n | md5sum | cut -c 1-8`
for((i=0;i<=${#a[@]};i++))
do
if [ "$random" == "${a[i]}" ];then
echo "$n" "${a[i]}"
let j++
fi
done
if [ $j -eq ${#a[@]} ]; then
echo "complete!"
break;
fi
done
改进的部分说明:
当4个结果已经对比成功后,之后的计算已经没有意义,应立即结束。
这篇关于shell小技巧(十)已知随机数的md5值,反推原值的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!