2017-07-06 2 views
1

Je souhaite inviter un utilisateur à entrer une valeur secrète (par exemple: variable de mot de passe, carte de crédit, clé/jeton) et souhaite voir s'il y a un moyen d'afficher le dernier N (disons 4 caractères) de la valeur de cette variable.Rembourrage et n'affiche que les N derniers caractères de la valeur d'une variable masquée/mot de passe/secret

Ex: Entrez votre carte de crédit: 1234567898765432

Je peux utiliser des enveloppes pour les ex stty -echo/echo pour cacher ce que l'utilisateur entrera ou utiliser read -s variable et il va cacher les valeurs, mais ce que je voudrais est de montrer si je dis $ echo $mySecretVariable (je ne sais pas si je dois vraiment écrire une fonction), la valeur sera: ************5432 ou la valeur de votre clé de jeton 4 se termine par *******************C5fx quelque chose comme ça où tous les caractères seront remplis d'un * et seul le dernier N sera affiché.

Répondre

2

Vous pouvez utiliser cette fonction bash pour masquer tout sauf les 4 derniers caractères:

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

utiliser ensuite comme:

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

mask 123 
123 

mask 123456 
**3456 
+1

Je me demande pourquoi vous avez 430K visites, merci :) Je suppose que la seul moyen est de le faire via une fonction alors. –