Position actuelle: Accueil> Derniers articles> Comment créer un outil de vérification de l'utilisateur de ligne de commande à l'aide de la fonction crypt () en php?

Comment créer un outil de vérification de l'utilisateur de ligne de commande à l'aide de la fonction crypt () en php?

M66 2025-05-21

Dans les processus quotidiens de gestion ou de développement du système, nous avons parfois besoin d'un simple mécanisme de vérification des utilisateurs, en particulier lors de la création d'outils de ligne de commande. Bien que nous préférons utiliser les mécanismes d'authentification OAuth, JWT ou de base de données dans des environnements de production, dans certains scénarios légers, un outil d'authentification utilisateur basé sur la fonction crypte () est suffisant.

Cet article vous mènera étape par étape pour créer un outil de vérification utilisateur de la ligne de commande PHP basé sur Crypt () .

1. Comprendre la fonction crypte ()

Crypt () est une fonction de chiffrement intégrée dans PHP, utilisé pour crypter les mots de passe dans un hachage à sens unique. Il peut utiliser différents algorithmes (tels que DES, MD5, SHA-256, SHA-512), selon le format de sel fourni.

Exemple:

 $password = 'secret123';
$hashed = crypt($password, '$6$rounds=5000$mysalt$'); // utiliser SHA-512 cryptage
echo $hashed;

2. Créer un fichier de mot de passe utilisateur

Nous devons d'abord définir un fichier de mot de passe utilisateur, similaire à Linux / etc / Shadow , qui est utilisé pour stocker le nom d'utilisateur et le mot de passe chiffré correspondant.

Par exemple, créez un fichier Users.txt avec le contenu suivant:

 alice:$6$rounds=5000$randomsalt$TtXcNpEYgkQq6nGyTT1ZqJK6sOHZ7GUa0OtUzBDwK8DUD.QHrVmMTE6EKH9vdA/5jYrc6IQsb9M4OzhxZs7Hz1
bob:$6$rounds=5000$othersalt$z1MBfFaSzPIcL7PZ8coYumWqaYvKPWhjvOwwBQ25BqNjfGC2THcR2A2E2MBc6m/mM6z2qKNEqgghADnIJo7KO0

3. Écrivez des scripts de vérification

Créer un fichier auth.php :

 <?php
// Vérifiez s&#39;il s&#39;exécute à partir de la ligne de commande
if (php_sapi_name() !== 'cli') {
    exit("Veuillez exécuter ce script à partir de la ligne de commande。\n");
}

// Obtenez le nom d&#39;utilisateur et le mot de passe
fwrite(STDOUT, "nom d&#39;utilisateur: ");
$username = trim(fgets(STDIN));

fwrite(STDOUT, "mot de passe: ");
system('stty -echo'); // 隐藏mot de passe输入
$password = trim(fgets(STDIN));
system('stty echo');
fwrite(STDOUT, "\n");

// Lire les fichiers utilisateur
$userFile = __DIR__ . '/users.txt';
if (!file_exists($userFile)) {
    exit("Le fichier utilisateur n&#39;existe pas。\n");
}

$found = false;
$lines = file($userFile, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
foreach ($lines as $line) {
    list($user, $hashed) = explode(':', $line, 2);
    if ($user === $username) {
        // 验证mot de passe
        if (crypt($password, $hashed) === $hashed) {
            echo "L&#39;authentification est réussie!accueillir,{$username}。\n";
        } else {
            echo "mot de passe错误。\n";
        }
        $found = true;
        break;
    }
}

if (!$found) {
    echo "L&#39;utilisateur n&#39;existe pas。\n";
}

4. Comment ajouter de nouveaux utilisateurs?

L'ajout d'un mot de passe à l'utilisateur peut être effectué via un outil de ligne de commande simple:

 <?php
// 创建新用户cryptage条目
$username = readline("新nom d&#39;utilisateur: ");
$password = readline("mot de passe: ");

// générer salt et hash
$salt = base64_encode(random_bytes(8));
$salt = str_replace('+', '.', substr($salt, 0, 16)); // Traitement de la compatibilité
$fullSalt = '$6$rounds=5000$' . $salt . '$';
$hashedPassword = crypt($password, $fullSalt);

// Résultat de sortie
echo "{$username}:{$hashedPassword}\n";
// Peut être ajouté à users.txt Dans le fichier

V. Conclusion

Cet outil, bien que simple, est très utile dans l'automatisation des scripts, les tests de sécurité ou le prototypage rapide. Il peut être facilement intégré dans les scripts bash, les processus de déploiement automatisés et même utilisé pour sécuriser les interfaces pour accéder aux outils CLI PHP.

Pour les environnements de production, il est recommandé d'adopter un mécanisme d'authentification des utilisateurs plus professionnel et de fournir un contrôle d'autorisation approprié pour les fichiers de mot de passe.