0

Pour des raisons internes, j'ai besoin de stocker les mots de passe pour les comptes tiers dans une base de données, donc je ne peux pas vraiment utiliser un hachage.Sécuriser les mots de passe en clair sur une base de données

Existe-t-il un moyen de crypter le mot de passe en clair afin qu'un pirate potentiel ne puisse pas facilement récupérer le mot de passe même s'il avait la table mysql mais je peux encore le décrypter pour voir sa forme originale?

+0

Pourquoi avez-vous besoin de pouvoir récupérer le mot de passe ?! –

+0

Lisez ceci: https://www.troyhunt.com/lessons-in-website-security-anti/ –

+0

Parce que ce sont des comptes sur un site tiers et je dois être en mesure de se connecter en cas de besoin. – maddo7

Répondre

1

Il n'est pas recommandé de déchiffrer les mots de passe. Mais si votre exigence est que simplement utiliser une méthode de chiffrement ou de déchiffrement de chaîne.

J'ai récemment utilisé la fonction ci-dessous pour chiffrer ou déchiffrer une chaîne. Pour sécuriser l'URL. Vous pouvez également utiliser cette fonction de cryptage ou de décryptage pour sécuriser l'URL lors de l'utilisation des requêtes de méthode GET.

<?php 
define("ENCRYPTION_KEY", "[email protected]#$%^&*"); 
$string = "Plain Text"; 

echo $encrypted = encrypt($string, ENCRYPTION_KEY); 
echo "<br />"; 
echo $decrypted = decrypt($encrypted, ENCRYPTION_KEY); 

// this function will return encrypted string 
function encrypt($pure_string, $encryption_key) { 
    $iv_size = mcrypt_get_iv_size(MCRYPT_BLOWFISH, MCRYPT_MODE_ECB); 
    $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND); 
    $encrypted_string = mcrypt_encrypt(MCRYPT_BLOWFISH, $encryption_key, utf8_encode($pure_string), MCRYPT_MODE_ECB, $iv); 
    return $encrypted_string; 
} 

// this function will return encrypted string 
function decrypt($encrypted_string, $encryption_key) { 
    $iv_size = mcrypt_get_iv_size(MCRYPT_BLOWFISH, MCRYPT_MODE_ECB); 
    $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND); 
    $decrypted_string = mcrypt_decrypt(MCRYPT_BLOWFISH, $encryption_key, $encrypted_string, MCRYPT_MODE_ECB, $iv); 
    return $decrypted_string; 
} 
?> 

Donc, pour votre but en utilisant ce magasin de fonction cryptée texte brut dans la base de données et le récupérer en utilisant une autre fonction.

+0

Le mode ECB n'est en fait jamais un bon choix, il n'utilise pas de IV du tout, donc le résultat de 'mcrypt_get_iv_size (MCRYPT_BLOWFISH, MCRYPT_MODE_ECB)' sera toujours égal à zéro. – martinstoeckli

+0

que recommanderiez-vous d'utiliser? – maddo7