程序员

算法解密84位加密,进制转换解密脚本

作者:admin 2021-06-24 我要评论

bcrpm=`rpm -qa | grep "^bc" | wc -l` # 定义bcrpm变量:查看已安装包,过滤开头为 bc 并且 wc -l 进行计数if [ $bcrpm -lt 1 ] # lt 小于:参考:shell if 条...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)
bcrpm=`rpm -qa | grep "^bc" | wc -l` # 定义bcrpm变量:查看已安装包,过滤开头为 bc 并且 wc -l 进行计数 if [ $bcrpm -lt 1 ] # lt 小于:参考:shell if 条件判断文件或目录;字符串长度或为空,逻辑运算: eisc.cn/index.php?c=read id=409 page=1 yum install -y bc # 安装进制转换工具 echo "bc 工具已经安装" clear read -p "请输入需要解密的20进制msgid字符:" a echo "截取前20位字符:" a=`echo $a | cut -c1-10` ; echo $a # cut -c1-20 字符串1到20位数 echo "转换为 10进制字符串:" ((a=20#$a)) ; echo $a # 将20进制转换为10进制 er=`echo "obase=2;$a" | bc` # 定义变量 er为:打印10进制变量,并且转换为 二进制 cz=`echo $[86-${#er}]` # 定义cz变量:echo $[] 进行计算,两个数相减法运算 echo "$er 共 ${#er} 位数二进制 , 需要补0个数:$cz 正在进行msgid解密,请稍等!" echo "正在参与解密计算请稍后!" # 打印变量字符串长度:echo ${# } c1=1 c2=`echo $[9-$cz]` ; echo "第二个数:开始从 $c2 打印后面 9 个数字" c3=`echo $[$c2+9]` ; echo "第3个数:开始从 $c3 打印后面 9 个数字" c4=`echo $[$c3+9]` ; echo "第4个数:开始从 $c4 打印后面9个数字" c5=`echo $[$c4+9]` ; echo "第5个数:开始从 $c5 打印后面9个数字" c6=`echo $[$c5+9]` ; echo "第6个数:开始从 $c6 打印后面9个数字" c7=`echo $[$c6+9]` ; echo "第7个数:开始从 $c7 打印后面9个数字" # 定义变量c 为echo 计算的值 str1=`echo $er | awk '{c1='"c1"'; print substr($0,1,9)}'` ; echo $str1 str2=`echo $er | awk '{c2='"c2"'; print substr($0,10,9)}'` ; echo $str2 str3=`echo $er | awk '{c3='"c3"'; print substr($0,19,9)}'` ; echo $str3 str4=`echo $er | awk '{c4='"c4"'; print substr($0,28,9)}'` ; echo $str4 str5=`echo $er | awk '{c5='"c5"'; print substr($0,37,9) }'` ; echo $str5 str6=`echo $er | awk '{c6='"$c6"'; print substr($0,46,9)}'` ; echo "测试6:" $str6 str7=`echo $er | awk '{c7='"$c7"'; print substr($0,55,9)}'` ; echo $str7 # 定义变量str 为:打印二进制变量er 然后管道(并且规则) # awk'{ }' 函数:内部变量c引用外部变量c用符号 '" "' ; print 打印 substr($0,1,9) 截取范围字符串,$0所有字符串,1为从1开始,后面的9位数 echo "原始字符 " $er echo "删除空格后 " $str1 $str2 $str3 $str4 $str5 $str6 $str7 | sed "s/ //g" echo "脚本分隔" $str1 $str2 $str3 $str4 $str5 $str6 $str7 $str1 $str2 $str3 $str4 $str5 $str6 $str7 # 定义数组 a 变量,里面的元素用空格隔开 echo ${a[*]} # 打印数组 a 的所有元素 [*] ; 当 [1] 时,为角标 2 ,第二个元素 for i in ${a[*]} # 定义for 循环 变量 i 是数组里面的所有元素 do # 开始循环 ((a=2#$i)) ; echo $a # 将二进制数组元素转换为 10进制并且打印其值 b[$c]=`echo $[$a]` # 定义数组b 角标为变量c 由下面的 (c++) 辅助控制,打印数组变量a 的所有元素赋值给数组b ((c++)) # c++ 直到数组打印完 done # 结束循环 echo "${b[*]} 总个数为:${#b[*]}" for((i=0;i i++)) # 定义for循环,变量i 的值为0 它小等于6的这个范围,进行自动增加数数 if [ $i -le 3 ] # 进行判断,$i 循环次数在3次呢,等于控制数组的前3个元素 then # 条件成立就进行 b[$i]=`echo ${b[$i]} | awk '{printf("%04d",$0)}'` # 修改数组的元素为 :打印元素${b[$i]} 并且:awk 函数进行格式化字 符串 "%04d" 格式化为4位整数, $0 所有字符串 echo "四位出现数:${b[$i]} " if [ $i -ge 4 ] # 判断角标大等于 4 then # 条件成立就开始: b[$i]=`echo ${b[$i]} | awk '{printf("%07d",$0)}'` # 字符串格式化为 7 位整数 echo "7位出现数:${b[$i]} " # 数组格式化为:角标前5位,格式化为4位整数,后5位格式化7位整数 echo "解密后的结果为:" ${b[*]} | sed "s/ //g"
本文转自网络,原文链接:https://developer.aliyun.com/article/784858

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • 阿里巴巴DevOps实践指南(八)| 以特性

    阿里巴巴DevOps实践指南(八)| 以特性

  • 阿里巴巴DevOps实践指南(五)| 业务驱

    阿里巴巴DevOps实践指南(五)| 业务驱

  • RISC-V工具链简介

    RISC-V工具链简介

  • 变局时代:RISC-V处理器架构的技术演变

    变局时代:RISC-V处理器架构的技术演变

腾讯云代理商
海外云服务器