Cryptage pour transfert de données

cs_caviar Messages postés 329 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 29 mars 2015 - 20 déc. 2007 à 15:02
cs_caviar Messages postés 329 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 29 mars 2015 - 24 déc. 2007 à 11:53
    saluté ... j'ai un petit pb de cryptage ...
je cherche une fonction qui me permette de crypter des caractères non imprimables (générés avec des xor de chaines entre elles ....) sous forme de caractères imprimables :)
en gros j'ai en entrée une chaine complètement bizaroide impossible à afficher dans un navigateur... et en sortie j'ai une jolie chaine alphanumérique .... que j'ai même pas besoin de passer en url_encode pour l'envoyer en get par exemple ...

j'ai bien sur essayé tout les cryptages de php
base64_encode, urlencode, convert_uuencode etc etc ...
rien trouvé de complètement réversible :( :(

d'ou mon gros help !
vala ...si un pro du cryptage passe par ici ... merki :)
@++

4 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
20 déc. 2007 à 20:08
Hello,

faudrait déjà expliquer d'où tu sors ta chaîne originale, comment elle est encodée, par quoi. Sinon difficile de t'aider à part..."t'es sûr que base64_encode ne le fait pas...???".
0
cs_caviar Messages postés 329 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 29 mars 2015 2
21 déc. 2007 à 10:02
    bah ma chaine originale je la sort de données qui me sont envoyé en post ou en get (par une anim flash mais normalement on s'en fout) ... en gros je récupère une url que je voudrai crypter de manière "aléatoire" :)
vala :) :)
0
cs_caviar Messages postés 329 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 29 mars 2015 2
24 déc. 2007 à 11:40
    j'ai trouvé ces fonctions de cryptage qui sont pas mal du tout ... seulement il reste un tout petit problème ...
je voudrai que la chaine cryptée ne contiènne aucun caractère autre que des chiffres ou des lettres ...
le url encore va encoder les + en %2B par exemple ... ce qui pose des problèmes certaines fois au décryptage ... me demandez pas pourquoi je sais pas ... j'ai tout testé :(
soit l'idée est de faire en sorte d'avoir uniquement des chiffres et des lettres :(
pouvez vous m'aider ?

function GenerationCle($Texte,$CleDEncryptage)
  {
  $CleDEncryptage = md5($CleDEncryptage);

  $Compteur=0;
  $VariableTemp = "";
  for ($Ctr=0;$Ctr<strlen($Texte);$Ctr++)
    {
    if ($Compteur==strlen($CleDEncryptage))
      $Compteur=0;
    $VariableTemp.= substr($Texte,$Ctr,1) ^ substr($CleDEncryptage,$Compteur,1);
    $Compteur++;
    }
  return $VariableTemp;
  }
 

function crypter($Texte,$Cle)
  {
  srand((double)microtime()*1000000);
  $CleDEncryptage = md5(rand(0,32000) );

  //------
  $Compteur=0;
  $VariableTemp = "";
  for ($Ctr=0;$Ctr<strlen($Texte);$Ctr++)
    {
    if ($Compteur==strlen($CleDEncryptage))
      $Compteur=0;
    $VariableTemp.= substr($CleDEncryptage,$Compteur,1).(substr($Texte,$Ctr,1) ^ substr($CleDEncryptage,$Compteur,1) );
    $Compteur++;
    }
 // return base64_encode(GenerationCle($VariableTemp,$Cle) );
 return urlencode(base64_encode(GenerationCle($VariableTemp,$Cle) ));

  }

function decrypter($Texte,$Cle)
  {
 
  $Texte = GenerationCle(urldecode(base64_decode($Texte)),$Cle);
 
  $VariableTemp = "";
  for ($Ctr=0;$Ctr<strlen($Texte);$Ctr++)
    {
    $md5 = substr($Texte,$Ctr,1);
    $Ctr++;
    $VariableTemp.= (substr($Texte,$Ctr,1) ^ $md5);
    }
  return $VariableTemp;
  }
//Exemple de l'appel aux fonctions Crypte et Decrypte :
/*
$Cle = "MotDePasseSuperSecretfff";
$MonTexte = "Mon numéro de carte de crédit est le 445.32.443.12";
$TexteCrypte = Crypte($MonTexte,$Cle);
$TexteClair = Decrypte($TexteCrypte,$Cle);
echo "Texte original : $MonTexte
";
echo "Texte crypté : $TexteCrypte
";
echo "Texte décrypté : $TexteClair
";
*/

thx !!
@++
0
cs_caviar Messages postés 329 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 29 mars 2015 2
24 déc. 2007 à 11:53
    j'ai essayé une astuce à base str_replace pour pallier au problème et il semble bien que le caractère + fasse foirer le decryptage :( c'est donc un pb d'algo et pas de transfert des données :(

function GenerationCle($Texte,$CleDEncryptage)
  {
  $CleDEncryptage = md5($CleDEncryptage);

  $Compteur=0;
  $VariableTemp = "";
  for ($Ctr=0;$Ctr<strlen($Texte);$Ctr++)
    {
    if ($Compteur==strlen($CleDEncryptage))
      $Compteur=0;
    $VariableTemp.= substr($Texte,$Ctr,1) ^ substr($CleDEncryptage,$Compteur,1);
    $Compteur++;
    }
  return $VariableTemp;
  }
//
//-
//--
//----
function cleancrypt($txt) {
  $txt = str_replace('+', 'aaaaaa', $txt);
  return $txt;
}
//
function cleandecrypt($txt) {
  $txt = str_replace('aaaaaa', '+', $txt);
  return $txt;
}
//---
//--
//-
//

function crypter($Texte,$Cle)
  {
  srand((double)microtime()*1000000);
  $CleDEncryptage = md5(rand(0,32000) );

  //------
  $Compteur=0;
  $VariableTemp = "";
  for ($Ctr=0;$Ctr<strlen($Texte);$Ctr++)
    {
    if ($Compteur==strlen($CleDEncryptage))
      $Compteur=0;
    $VariableTemp.= substr($CleDEncryptage,$Compteur,1).(substr($Texte,$Ctr,1) ^ substr($CleDEncryptage,$Compteur,1) );
    $Compteur++;
    }
 // return base64_encode(GenerationCle($VariableTemp,$Cle) );
 return urlencode(cleancrypt(base64_encode(cleandecrypt(GenerationCle($VariableTemp,$Cle) ))));

  }

function decrypter($Texte,$Cle)
  {
 
  $Texte = GenerationCle(urldecode(base64_decode($Texte)),$Cle);
 
  $VariableTemp = "";
  for ($Ctr=0;$Ctr<strlen($Texte);$Ctr++)
    {
    $md5 = substr($Texte,$Ctr,1);
    $Ctr++;
    $VariableTemp.= (substr($Texte,$Ctr,1) ^ $md5);
    }
  return $VariableTemp;
  }
0
Rejoignez-nous