【问题标题】:Comparing SHA-512 Salted Hashes, displays filename during execution比较 SHA-512 Salted Hashes,在执行期间显示文件名
【发布时间】:2020-01-01 22:33:57
【问题描述】:

在执行期间长话短说,我注意到 LIST 中的 "*" 以某种方式显示了我正在执行的文件的名称。无论如何让代码显示"*"而不是显示文件名?

我还是一个脚本新手,想不出什么办法。请帮忙...

#!/bin/bash

LIST='W 2 v * %'
encr="Cd9AjUI4nGglIcP3MByrZUnu.hHBJc7.eR0o/v0A1gu0/6ztFfBxeJgKTzpgoCLptJS2NnliZLZjO40LUseED/"

salt="8899Uidd"
for i in $LIST
  do
   for j in $LIST
    do
    for k in $LIST
     do
      for l in $LIST
        do
        for a in $LIST
            do
            echo -n "$i$j$k$l$a "

   test=`mkpasswd -m SHA-512 $i$j$k$l$a -s $salt`
    if [ $test == $encr ] ; then
            echo " Password is: $i$j$k$l$a"
            exit
        fi
        done
       done
      done
    done
done

#error displaying *

【问题讨论】:

    标签: bash sha512


    【解决方案1】:

    echo * 相同,将通配符* 扩展为当前目录中的文件名,同样a=*; for i in $a; do echo $i; done 将打印当前目录中的路径。您可以在网络的各个地方阅读更多关于引号和转义的信息。

    您可以使用 bash 数组正确引用元素:

    LIST=(W 2 v "*" %)
    for i in "${LIST[@]}"; do
    

    注意事项:

    • 不要使用反引号`,不鼓励使用。请改用$(..)
    • 引用您的变量扩展 [ "$test" = "$encr" ] 以防止出现此类常见错误。
    • == 是一个 bash 扩展,使用 = 可以移植。
    • 生成元素排列的方法看起来很奇怪,而且不可扩展。考虑编写一个函数或使用其他方法。即使(ab-)使用 bash 扩展 brace expansion echo {W,2,v,"*",%}{W,2,v,"*",%}{W,2,v,"*",%}{W,2,v,"*",%}{W,2,v,"*",%} 看起来更短。

    【讨论】:

      猜你喜欢
      • 2023-03-08
      • 1970-01-01
      • 2010-09-28
      • 1970-01-01
      • 2015-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多