270 votes

Comment crypter et décrypter une chaîne PHP ?

Ce que je veux dire, c'est que :

Original String + Salt or Key --> Encrypted String
Encrypted String + Salt or Key --> Decrypted (Original String)

Peut-être quelque chose comme :

"hello world!" + "ABCD1234" --> Encrypt --> "2a2ffa8f13220befbe30819047e23b2c" (may be, for e.g)
"2a2ffa8f13220befbe30819047e23b2c" --> Decrypt with "ABCD1234" --> "hello world!"
  • En PHP, comment faire ?

_(Tentative d'utilisation de Crypt_Blowfish mais cela n'a pas fonctionné pour moi)_

43 votes

@Rogue Il ne veut pas de hachage, il veut un cryptage symétrique (comme AES), mais il ne sait pas comment ça s'appelle. (Et maintenant il le sait :) )

0 votes

Quelle doit être la sécurité ?

3 votes

@, Vous ne faites pas de cryptage symétrique "salé", vous utilisez une clé. Une clé doit être gardée secrète. Un sel peut être public sans nuire à la sécurité (tant que le sel de chacun est différent), et c'est un terme utilisé dans le hachage des mots de passe.

0voto

Javed Points 297

Le code ci-dessous fonctionne en php pour toutes les chaînes contenant des caractères spéciaux.

   // Encrypt text --

    $token = "9611222007552";

      $cipher_method = 'aes-128-ctr';
      $enc_key = openssl_digest(php_uname(), 'SHA256', TRUE);  
      $enc_iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length($cipher_method));  
      $crypted_token = openssl_encrypt($token, $cipher_method, $enc_key, 0, $enc_iv) . "::" . bin2hex($enc_iv);
    echo    $crypted_token;
    //unset($token, $cipher_method, $enc_key, $enc_iv);

    // Decrypt text  -- 

    list($crypted_token, $enc_iv) = explode("::", $crypted_token);  
      $cipher_method = 'aes-128-ctr';
      $enc_key = openssl_digest(php_uname(), 'SHA256', TRUE);
      $token = openssl_decrypt($crypted_token, $cipher_method, $enc_key, 0, hex2bin($enc_iv));
    echo   $token;
    //unset($crypted_token, $cipher_method, $enc_key, $enc_iv);

-4voto

Manish Jangir Points 461

Prenez deux cordes. La première est votre valeur de sel appropriée et la seconde est votre chaîne d'origine qui doit être cryptée. Maintenant, éclatez votre valeur de sel en deux parties et concaténer les deux parties aux deux extrémités de votre chaîne originale et l'encoder avec base64_encode.

Dans la fonction de décryptage, il faut d'abord le décoder avec base64_decode. Divisez à nouveau votre valeur de sel en deux parties et remplacez les deux parties par '' dans la chaîne de décodage. Ceci est votre chaîne originale.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X