填充并仅显示掩码/密码/秘密变量值

时间:2017-07-06 20:17:26

标签: bash passwords padding masking secret-key

我想提示用户输入一个秘密值(例如:密码变量,信用卡,一些密钥/令牌),并希望看看是否有办法显示最后一个N(比如4个字符)那个变量的价值。

例: 输入您的信用卡号码:1234567898765432

我可以使用ex stty -echo/echo的包装来隐藏用户输入或使用read -s variable的内容,它会隐藏值,但我想要的只显示最后N个(例如: 4)这个变量的字符即 如果我说$ echo $mySecretVariable(不确定我是否真的必须写一个函数)那么它会将值回显为:************5432或你的令牌键值最后4以*******************C5fx结束其中所有字符都用*填充,只显示最后一个N.

1 个答案:

答案 0 :(得分:2)

您可以使用此bash函数屏蔽除最后4个字符以外的所有字符:

mask() {
   local r="${1?needs an argument}"
   if ((${#r} > 4)); then
      r="${r:0: -4}"
      echo "${r//?/*}${1: -4}"
   else
      echo "$r"
   fi
}

然后将其用作:

mask 1234567898765432
************5432

mask 123
123

mask 123456
**3456