2017-10-12 8 views
-2

J'ai ce codecryptage PHP chaîne vide

define('CRYPTKEY','rx4/YK51nJo7LuRnZAz/jpXZbCunkNplneL6ugkBs5g='); 
define('CRYPTALGO','aes-256-cbc'); 

public function crypt($text){ 
$iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length('aes-256-cbc')); 
$encryption_key = base64_decode(CRYPTKEY); 
$cryptedid = openssl_encrypt ($newid,CRYPTALGO,$encryption_key,0,$iv); 
return base64_encode($cryptedid.'::'.$iv); 
} 

public function decrypt($text){ 
    $encryption_key = base64_decode(CRYPTKEY); 
    list($encrypted_data, $iv) = explode('::', base64_decode($text), 2); 
    return openssl_decrypt($encrypted_data,CRYPTALGO,$encryption_key,0,$iv); 
    } 

CRYPTKEY a été créé comme ceci:

base64_encode(openssl_random_pseudo_bytes(32)); 

Mais je continue à avoir une chaîne vide sous forme de texte décodé ....

Quelqu'un peut m'aider à comprendre pourquoi?

+0

Pourquoi n'écrivez-vous pas l'identificateur en texte clair?! Quel est le but de ce cryptage insécurisé? –

+0

@AnttiHaapala Je passe l'identifiant chiffré pour obfuscater l'identifiant de la ligne dans la base de données où j'ajoute des données sensibles. Si vous n'avez pas accès au serveur, s'il vous plaît partager avec moi comment "insécurité" est ce script en m'envoyant le script pour cracker cet algorithme. – Juanse

Répondre

2

Vous n'utilisez pas $text n'importe où dans votre fonction crypt(). Ainsi, vous cryptez une chaîne vide ('non existante').

Vous devrez changer $newid (en crypt()) en $text pour le faire fonctionner. Comme ceci:

$cryptedid = openssl_encrypt($text,CRYPTALGO,$encryption_key,0,$iv); 
//       ^^^^^ 
+0

J'ai passé une journée là-dessus et c'était si simple. Merci beaucoup – Juanse

+0

La bonne chose est que j'ai passé l'autre moitié de la journée à trouver un bon algorithme en PHP, alors peut-être que quelqu'un trouvera ce post utile un jour – Juanse

+8

Au risque de paraître impoli, si quelque chose d'aussi simple était de casser votre code , vous pourriez ne pas concevoir votre propre cryptographie. [Lisez ici pourquoi on dit souvent aux développeurs de ne pas concevoir leur propre cryptographie] (http://www.cryptofails.com/post/75204435608/write-crypto-code-dont-publish-it). Consultez [defuse/php-encryption] (https://github.com/defuse/php-encryption) pour utiliser une bibliothèque sécurisée à utiliser à la place. –