IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Sécurité] Cryptage simple d'entier


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 72
    Points : 58
    Points
    58
    Par défaut [Sécurité] Cryptage simple d'entier
    Bonjour je voudrai savoir comment faire pour modifier un créer à partir d'un entier simple (12, 25, 49, ...) une chaine alpha-numérique pour éviter de repérer mon entier (j'utilise un auto-incrément). De plus je voudrai que cette fonction soit bijective, donc pas d'utilisation de md5() car. Merci de votre aide

  2. #2
    Membre émérite

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Expert PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 127
    Points : 2 557
    Points
    2 557
    Par défaut
    si elle est bijective, elle est cassable donc ...

    juste pour comprendre, tu t'en sers dans quoi ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 72
    Points : 58
    Points
    58
    Par défaut
    Cela me dérange pas que cela soit cassable, je veux juste masquer l'entier qui est issu de ma base par auto-incrément à l'utilisateur par exemple comme par-exemple pour masquer le numéro d'un ticket, etc... afin d'éviter d'avoir ticket n°1.

    ce traitement est juste au niveau de l'affichage, je ne veux pas stocker l'entier crypter dans ma base.

  4. #4
    Membre émérite

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Expert PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 127
    Points : 2 557
    Points
    2 557
    Par défaut
    ce traitement est juste au niveau de l'affichage, je ne veux pas stocker l'entier crypter dans ma base.
    affichage ?
    ou passage en GET ?

    c'est vraiment grave si le mec voit ticket 1 ? ca rend ton site cassable ?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 72
    Points : 58
    Points
    58
    Par défaut
    non en affichage, j'ai pas envie de lui montrer si mon site est réactif ou pas, donc juste un petit algo de cryptage bijectif me suffirait

  6. #6
    Membre émérite

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Expert PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 127
    Points : 2 557
    Points
    2 557
    Par défaut
    pourquoi bijectif alors ? si c'est juste pour afficher, pourquoi ne pas afficher un md5() de cela ?

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 72
    Points : 58
    Points
    58
    Par défaut
    par exemple dans le cas d'un numéro de commande, si un client appele et dit j'ai un soucis sur ma commande ea12b568 je pourrai pas retrouver sa commande

  8. #8
    Membre émérite

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Expert PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 127
    Points : 2 557
    Points
    2 557
    Par défaut
    oki en gros tu veux un chiffre, mais tu veux pas qu'il voit que c'est le premier mec à venir sur ton site ?

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 72
    Points : 58
    Points
    58
    Par défaut
    oui voilà exactement pour masquer l'activité de mon site

  10. #10
    Membre émérite

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Expert PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 127
    Points : 2 557
    Points
    2 557
    Par défaut
    oui mais le truc, il faut que ton chiffre grand soit unique ...
    et ca c'est pas facile ...

    P.S : tu peux toujours partir de 148373 et voila comme ça t'es content.

    Allez ++

  11. #11
    Membre actif
    Profil pro
    Ingénieur développement
    Inscrit en
    Juillet 2004
    Messages
    323
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement

    Informations forums :
    Inscription : Juillet 2004
    Messages : 323
    Points : 291
    Points
    291
    Par défaut
    Le problème d'un grand nombre, c'est que si quelqu'un vient un dimanche et reviens le dimanche d'après, il verra le nombre de commandes passées entre les deux dates. Il lui suffira de faire une soustraction des 2 nombres pour avoir le nombre de commande pendant une semaine.
    Ce n'est donc pas la solution.

    Le problème est le suivant. Sur le site de e-commerce, on a une base de données avec un numéro de commande auto-incrémenté.

    Donc une personne qui passe 2 commandes pendant un certain délai peut connaître exactement le nombre de commandes passées dans cet intervalle.

    Il faut donc qu'on génère un nombre qui n'indique pas le nombre de commandes passées entre 2 dates de commandes.
    Le MD5 ne convient pas, car si le client appelle et donne son numéro MD5, nous ne pourrons pas retrouver son vrai numéro de commande.
    MD5 est très bien pour stocker des mots de passe, mais c'est mauvais dans notre cas.

    Un cryptage serait bon dans notre cas, le problème, c'est qu'il faudrait que la version cryptée du numéro de commande soit simple. Il faut pas que le numéro de commande fasse 64 chiffres et que le client nous donne ça.
    Il nous faudrait simplement une chaine d'à peu près 6 à 10 chiffres seulement.

    Connaissez-vous un algo de cryptage qui puisse fonctionner dans notre cas?

    Merci!
    Хајде Јано коло да играмо

  12. #12
    Membre émérite

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Expert PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 127
    Points : 2 557
    Points
    2 557
    Par défaut
    pourquoi ne pas faire un champ id et champ id_fake dans votre table
    et dans id_fake vous mettez ce que vous voulez pour le client
    vous pouvez prendre les 10 premier chiffre du md5, faire un randid. etc ...

    Sinon pour les scripts il doit en avoir sur internet, suffit de chercher.

    Moi je trouve stupide de vouloir cacher cela ...
    ou alors vous faites des commande avec le nom du mec suivit d'un numéro
    et ca sera sa premiere commande, et sa deuxieme commande, il saura pas si les autres en ont fait ...

  13. #13
    Membre actif
    Profil pro
    Ingénieur développement
    Inscrit en
    Juillet 2004
    Messages
    323
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement

    Informations forums :
    Inscription : Juillet 2004
    Messages : 323
    Points : 291
    Points
    291
    Par défaut
    Le md5 ne me plait pas.
    Je vais tenter d'expliquer.
    En fait, même en utisant le md5 avec une valeur aléatoire et de le stocker dans un champ, rien ne prouve qu'on ne tombera pas deux fois sur le même nombre.
    Et là, si on essaye de retrouver la commande, on va tomber sur 2 commandes!!!
    Laquelle prendre, là c'est un peu hasardeux.
    Je suis d'accord que cela ne devrait arriver que rarement, mais je n'ai pas envie qu'on ait ensuite des problèmes à cause de ça.

    Quand à la stupidité de cacher le nombre de commandes, elle n'est pas mienne. De plus, je ne pense pas que cela soit si stupide.
    En effet, il existe de la concurrence sur certains marchés, et le fait de donner le nombre de commandes passées sur un site peut donner une information de valeur.
    Le but est de donner le minimum d'information à la concurrence. Pour nous, si nous pouvions avoir le nombre de commandes de nos concurrents, cela nous aiderait bien à évaluer le nombre de produits à commander chez nos fournisseurs.
    Il est donc préférable, même dans le doute, d'éviter de donner cette information.

    Ta deuxième idée est par contre très intéressante. Le fait de donner un numéro de commande avec le nom et le nombre de commande par utilisateur est très bonne.
    Nous allons réfléchir à cette solution. Peut être allosn nous simplement concaténer le numéro de client avec son nombre de commande.

    Merci beaucoup pour l'idée, c'est "stupide" de notre part de ne pas y avoir pensé avant ;-)
    Хајде Јано коло да играмо

  14. #14
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 488
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 488
    Points : 6 037
    Points
    6 037
    Par défaut
    Personnellement, je comprend parfaitement son inquiétude car je suis dans le e-commerce et je me retrouve dans le même cas que lui. Moi j'ai opté pour une numéro de commande généré par divers critères.
    Dans ma table commande il y aura bien un id utilisable uniquement pour l'usage interne mais il y aura un autre champs "num commande" qui lui est généré par un script que tu devras reflechire. Par sécurité il ne faut pas associé l'identifiant unique de la table commande au numéro de la commande car c'est trop dangereux. Pas besoin de MD5() car comme il le souligne il faut que ça reste compréhensible pour le client.
    un numéro de commande de la sorte : xxx-xxx-xxx-xxx ouvre beaucoup de possibilité. Via ce script il ne sera pas possible de remonter les informations.
    Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...

  15. #15
    Membre expérimenté
    Avatar de guitou12
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 077
    Points : 1 561
    Points
    1 561
    Par défaut
    Pour reprendre l'idée de Maxoo le mieux est de prendre le nom du client (pas forcément unique) concaténé à la date de la commande (pas unique non plus) et tu peux rajouter l'heure+minutes+secondes+milisecondes (si tu arrives à avoir 2 fois la même chapeau

    DUPOND1007061543251 ça me semble pas mal non ?
    Ex développeur Php / J2EE.
    Actuellement reconverti à SharePoint 2013

    Mon blog SP 2013

  16. #16
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    419
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Février 2005
    Messages : 419
    Points : 532
    Points
    532
    Par défaut
    Pourquoi pas un truc tout simple ?
    Genre pour chaque chiffre du numéro de commande, tu remplaces par la lettre correspondante (A=1,B=2 ...).
    Et après histoire d'embrouiller un peu tu décalles ces lettres, un truc comme avec la fonction str_rot13() par exemple.

    Comme ça ta chaine est "pseudo cryptée", et tu peux facilement retrouver le numero d'origine.
    J'ai bon ou jsuis à coté de la plaque ?

  17. #17
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 72
    Points : 58
    Points
    58
    Par défaut Solution trouvée
    Merci pour toutes ses idées aussi intéressantes les unes que les autres. Finalement on a opté pour un système efficace mais surement complexe pour l'utilisation que l'on veut en faire.

    D'abord on crypte le numero de commande issu d'un auto-incrément avec la fonction mcrypt_encrypt en utilisant l'algo xtea en mode ecb. Ensuite on code le resultat crypté en hexa-décimal pour avoir un numéro de commande de 16 charactère hexa-decimal.

    Et pour retrouver le numéro de commande (entier issu d'un auto-incrément) on décode la chaine hexa-decimale puis on décrypte avec mcrypt_decrypt. Voilà le tour est joué.

    Merci de toutes vos remarques avisées.

  18. #18
    Membre émérite

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Expert PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 127
    Points : 2 557
    Points
    2 557
    Par défaut
    Citation Envoyé par Florent08800
    Merci pour toutes ses idées aussi intéressantes les unes que les autres. Finalement on a opté pour un système efficace mais surement complexe pour l'utilisation que l'on veut en faire.

    D'abord on crypte le numero de commande issu d'un auto-incrément avec la fonction mcrypt_encrypt en utilisant l'algo xtea en mode ecb. Ensuite on code le resultat crypté en hexa-décimal pour avoir un numéro de commande de 16 charactère hexa-decimal.

    Et pour retrouver le numéro de commande (entier issu d'un auto-incrément) on décode la chaine hexa-decimale puis on décrypte avec mcrypt_decrypt. Voilà le tour est joué.

    Merci de toutes vos remarques avisées.
    et donc votre client, il doit vous dire un numéro de commande hyper compliqué.

  19. #19
    Membre expérimenté
    Avatar de guitou12
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 077
    Points : 1 561
    Points
    1 561
    Par défaut
    Plus c'est compliqué plus ça fait sérieux
    Ex développeur Php / J2EE.
    Actuellement reconverti à SharePoint 2013

    Mon blog SP 2013

  20. #20
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 72
    Points : 58
    Points
    58
    Par défaut
    Effectivement, il doit nous dire une chaine assez compliqué mais cependant il ne nous contactera pas si souvent que cela, c'est surtout au niveau d'un retour d'un produit qu'il devra le préciser.

    C'est vrai que cela est compliqué, au moins la concurrence n'est pas prêt de voir l'evolution de commandes.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Sécurité] Cryptage et grain de sel
    Par Gwipi dans le forum Langage
    Réponses: 6
    Dernier message: 05/09/2012, 16h13
  2. Problème cryptage simple de fichier
    Par darthnexus dans le forum C++
    Réponses: 4
    Dernier message: 03/06/2006, 18h16
  3. [Sécurité] Cryptage MD5 et sécurité ?
    Par renaudjuif dans le forum Langage
    Réponses: 11
    Dernier message: 01/05/2006, 01h52
  4. [Sécurité] Cryptage des mots de passe
    Par franfr57 dans le forum Langage
    Réponses: 9
    Dernier message: 25/04/2006, 14h04
  5. Cryptage Simple de mot de passe
    Par xavmax dans le forum C++Builder
    Réponses: 12
    Dernier message: 29/11/2005, 23h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo