18 已知下面的字符串是通过RANDOM随机数变量md5sum|cut-c 1-8截取后的结果
面试题18:破解RANDOM随机数案例
已知下面的字符串是通过RANDOM随机数变量md5sum后,再截取一部分连续字符串的结果,请破解这些字符串对应的使用md5sum处理前的RANDOM对应的数字?
21029299
00205d1c
a3da1677
1f6d12dd
890684b
[root@jenkins scripts]# cat aa.txt
21029299
00205d1c
a3da1677
1f6d12dd
890684b
[root@jenkins scripts]# cat rd_mat.sh #!/bin/bash ############################################################## # File Name: rd_mat.sh # Version: V1.0 # Author: gaobo # Organization: 641627690@qq.com # Created Time : 2017-12-07 19:57:59 # Description: ############################################################## for ((i=0;i<=32767;i++)) do for j in `cat /server/scripts/aa.txt` do #echo "$(echo $i|md5sum|cut -c 1-8) ${j}" if [ "$(echo $i|md5sum|cut -c 1-8)" == "${j}" ] then echo $i fi done done
[root@jenkins scripts]# sh rd_mat.sh
1346
7041
25345
25667
方法二:
[root@jenkins scripts]# cat rd_mat.sh #!/bin/bash ############################################################## # File Name: rd_mat.sh # Version: V1.0 # Author: gaobo # Organization: 641627690@qq.com # Created Time : 2017-12-07 19:57:59 # Description: ############################################################## for ((i=0;i<=32767;i++)) do for j in `cat /server/scripts/aa.txt` do if [[ "$(echo $i|md5sum)" =~ "${j}" ]] then echo $i fi done done
现在每次分析网站日志的时候都需要判断百度蜘蛛是不是真实的蜘蛛,nslookup之后需要判断结果中是否包含“baidu”字符串 以下给出一些shell中判断字符串包含的方法,来源程序员问答网站 stackoverflow 以及segmentfault。 方法一:利用grep查找 strA="long string" strB="string" result=$(echo $strA | grep "${strB}") if [[ "$result" != "" ]] then echo "包含" else echo "不包含" fi 先打印长字符串,然后在长字符串中 grep 查找要搜索的字符串,用变量result记录结果 如果结果不为空,说明strA包含strB。如果结果为空,说明不包含。 这个方法充分利用了grep 的特性,最为简洁。 方法二:利用字符串运算符 strA="helloworld" strB="low" if [[ $strA =~ $strB ]] then echo "包含" else echo "不包含" fi 利用字符串运算符 =~ 直接判断strA是否包含strB。(这不是比第一个方法还要简洁吗!) 方法三:利用通配符 A="helloworld" B="low" if [[ $A == *$B* ]] then echo "包含" else echo "不包含" fi 这个也很easy,用通配符*号代理strA中非strB的部分,如果结果相等说明包含,反之不包含。 方法四:利用case in 语句 thisString="1 2 3 4 5" # 源字符串 searchString="1 2" # 搜索字符串 case $thisString in *"$searchString"*) echo Enemy Spot ;; *) echo nope ;; esa 这个就比较复杂了,case in 我还没有接触到,不过既然有比较简单的方法何必如此 方法五:利用替换 STRING_A=$1 STRING_B=$2 if [[ ${STRING_A/${STRING_B}//} == $STRING_A ]] then ## is not substring. echo N return 0 else ## is substring. echo Y return 1 fi 这个也挺复杂
时来天地皆同力,运去英雄不自由
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!