Bonjour le gens,

Pour protéger les données d'une base de donnée, je me suis dit que je pouvais chiffrer les mails, noms, adresse, téléphone.... (les stocker chiffrés)
Bon le haschage + grain de sable ça c'est ok j'utilise :

hash('ripemd320' , $salage);

Mais pour faire l'inverse ? c'est à dire retrouver la donnée en clair c'est possible ? si oui comment ?

Merci par avance pour votre aide

8 réponses


Bonjour,

Il faut faire attention aux termes employés.
Il y a une énorme différence entre "hasher" et 'crypter" des données.

Le "hashage" permet de rendre illisible des données sans possibilité de les "dé"hasher ...
Le cryptage permet lui de rendre lisible les données, tu peux voir du côté de la librairie sodium

ha oui ok merci Bidule

Salut,

Attention aux termes employés @bidule, crypter n'est pas un mot qui existe https://chiffrer.info/

Bien vu ;)

heu .... mince crypt() est obsolète... bon les données c'est pas celles de la banque de France mais bon....

du coup je sais pas vers quoi l'orienter

  • mcrypt()

salut,

Sodium est une extension Core de PHP 7.2, donc tu peux l'utiliser directement.

Merci bidule pour ton aide

OVH ne prends pas en charge libsodium dans mon cas du coup j'essaye d'utiliser Open SSL mais je n'arrive pas à décrypter le texte crypté, tu aurais une idée ?

function chiffrement($mot){
//$key devrait être généré précédement dune manière cryptographique, tel que openssl_random_pseudo_bytes
$plaintext = $mot;
$ivlen = openssl_cipher_iv_length($cipher="AES-128-CBC");
$iv = openssl_random_pseudo_bytes($ivlen);
$ciphertext_raw = openssl_encrypt($plaintext, $cipher, $key, $options=OPENSSL_RAW_DATA, $iv);
$hmac = hash_hmac('sha256', $ciphertext_raw, $key, $as_binary=true);
$ciphertext = base64_encode( $iv.$hmac.$ciphertext_raw );
return $ciphertext;
}

fonctionne le texte est crypté

function dechiffrement($ciphertext){
// déchifrrer plus tard ...
$c = base64_decode($ciphertext);
$ivlen = openssl_cipher_iv_length($cipher="AES-128-CBC");
$iv = substr($c, 0, $ivlen);
$hmac = substr($c, $ivlen, $sha2len=32);
$ciphertext_raw = substr($c, $ivlen+$sha2len);
$original_plaintext = openssl_decrypt($ciphertext_raw, $cipher, $key, $options=OPENSSL_RAW_DATA, $iv);
$calcmac = hash_hmac('sha256', $ciphertext_raw, $key, $as_binary=true);
if (hash_equals($hmac, $calcmac))//PHP 5.6+ timing attack safe comparison
{
    return $original_plaintext;
}

}

ne fonctionne pas j'ai rien dans le retour de la fonction dechriffrement !? (c'est une adaptation de l'exemple 2 https://www.php.net/manual/fr/function.openssl-encrypt.php)

Je galère...