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

ASP.NET Discussion :

[Débutant] Générer une variable chiffrée


Sujet :

ASP.NET

  1. #1
    Membre éclairé Avatar de sorry60
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 802
    Par défaut [Débutant] Générer une variable chiffrée
    Bonjour,

    J'ai sur ma page un formulaire prenant un input : un nom.

    Je cherche côté serveur :

    - à récupérer la valeur de l'input :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Request.QueryString[['name']
    - à chiffrer cette valeur avec un TripleDES (dont je choisis la clé et le vecteur d'initialisation pour le mode CBC).
    - cette valeur chiffrée devra être ensuite afficher en réponse (Response.Write) sous forme de chaine d'octets en hexa. Par exemple : 1712889632...

    Je n'ai aucune idée de comment faire ça en ASP.NET...
    Merci pour vos lumières !

  2. #2
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Salut,

    Est-ce que tu sais comment t'y prendre pour chiffrer une chaîne de caractère selon l'algorithme dont tu parles?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    string crypto = MaClasse.TripleDESEncrypt("Hello world");
    Response.Write(crypto);
    // Affiche 123574...
    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  3. #3
    Membre éclairé Avatar de sorry60
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 802
    Par défaut
    Citation Envoyé par Immobilis Voir le message
    Salut,

    Est-ce que tu sais comment t'y prendre pour chiffrer une chaîne de caractère selon l'algorithme dont tu parles?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    string crypto = MaClasse.TripleDESEncrypt("Hello world");
    Response.Write(crypto);
    // Affiche 123574...
    A+
    Justement je cherche désespérément la classe permettant de faire TripleDESEncrypt()...

    Dans un 2ème temps, je souhaiterais faire l'inverse :

    - récupérer une valeur chiffrée en DES (de la forme var=initVectorBloc1Bloc2) où :
    - initVector est une chaine hexa, par ex : 0102030405060708
    - bloc1 et bloc2 aussi, par ex : 17a256851c8DFF1B
    - splitter la chaîne afin de recuperer l'iv et les blocs dans des byte[] afin de pouvoir déchiffrer la variable (je connais bien sûr la clef de chiffrement/déchiffrement).

    Merci pour votre aide.

  4. #4
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par sorry60 Voir le message
    Justement je cherche désespérément la classe permettant de faire TripleDESEncrypt()... .
    Voir la classe TripleDESCryptoServiceProvider. (namespace System.Security.Cryptography).

    Il y a un exemple d'utilisation dans le MSDN.

  5. #5
    Membre éclairé Avatar de sorry60
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 802
    Par défaut
    Citation Envoyé par Bluedeep Voir le message
    Voir la classe TripleDESCryptoServiceProvider. (namespace System.Security.Cryptography).

    Il y a un exemple d'utilisation dans le MSDN.
    D'accord merci.

    Et pour mon deuxième problème, splitter une String en plusieurs byte[] ?

  6. #6
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par sorry60 Voir le message
    D'accord merci.

    Et pour mon deuxième problème, splitter une String en plusieurs byte[] ?

    Tu peux utiliser la méthode ToCharArray pour convertir ta chaine en tableau de char, puis convertir le tableau de char en tableau de byte.

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    string s = "abced";
    byte[] bytes = s.ToCharArray().Select(c => (byte)c).ToArray();
    

  7. #7
    Membre éclairé Avatar de sorry60
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 802
    Par défaut
    Citation Envoyé par Bluedeep Voir le message
    Tu peux utiliser la méthode ToCharArray pour convertir ta chaine en tableau de char, puis convertir le tableau de char en tableau de byte.
    Ok je vais essayer de me debrouiller avec ça et avec les exemples de la msdn.

    Merci

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par Bluedeep Voir le message
    Tu peux utiliser la méthode ToCharArray pour convertir ta chaine en tableau de char, puis convertir le tableau de char en tableau de byte.

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    string s = "abced";
    byte[] bytes = s.ToCharArray().Select(c => (byte)c).ToArray()
    En .NET les chaines de caractères sont en Unicode, donc un caractère ne tient pas forcément sur un octet...

    Pour obtenir les octets correspondant à une chaine, il faut déjà choisir un encodage (UTF-8 par exemple), et utiliser la méthode GetBytes de cet encodage :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    byte[] bytes = Encoding.UTF8.GetBytes(s);

  9. #9
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par tomlev Voir le message
    En .NET les chaines de caractères sont en Unicode, donc un caractère ne tient pas forcément sur un octet...
    Bonne remarque.
    J'avais simplement fait au plus général et au plus court.

  10. #10
    Membre éclairé Avatar de sorry60
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 802
    Par défaut
    Citation Envoyé par tomlev Voir le message
    En .NET les chaines de caractères sont en Unicode, donc un caractère ne tient pas forcément sur un octet...

    Pour obtenir les octets correspondant à une chaine, il faut déjà choisir un encodage (UTF-8 par exemple), et utiliser la méthode GetBytes de cet encodage :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    byte[] bytes = Encoding.UTF8.GetBytes(s);
    Ok mais si je reçois par exemple cette chaîne depuis une variable GET :

    1712AE2F8DDFF8C7
    Comment obtenir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    byte[] iv = { 0x17, 0x12, 0xAE, ..., 0xC7};
    ?

  11. #11
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Tu peux décoder la chaine en prenant les caractères 2 par 2 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    byte[] GetBytesFromHex(string s)
    {
        int length = s.Length / 2;
        byte[] bytes = new byte[length];
        for (int i = 0; i < length; i++)
        {
            bytes[i] = Convert.ToByte(s.Substring(2 * i, 2), 16);
        }
        return bytes;
    }

  12. #12
    Membre éclairé Avatar de sorry60
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 802
    Par défaut
    Ok merci, je vais voir avec tout ça.

  13. #13
    Membre éclairé Avatar de sorry60
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 802
    Par défaut
    En parcourant les classes avec Reflector, je suis tombé sur cette méthode qui ferait facilement exactement ce que je veux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.Web.UI.Page.DecryptString(String s)
    Malheureusement je n'arrive pas à l'utiliser dans mon code, c'est une "internal static" méthode...

    Une idée ?

  14. #14
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par sorry60 Voir le message
    Malheureusement je n'arrive pas à l'utiliser dans mon code, c'est une "internal static" méthode...
    Si elle est internal, c'est justement parce que tu n'es pas supposé l'utiliser...

  15. #15
    Membre éclairé Avatar de sorry60
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 802
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Si elle est internal, c'est justement parce que tu n'es pas supposé l'utiliser...
    C'est bien dommage, elle fait exactement ce dont j'ai besoin !

  16. #16
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Citation Envoyé par sorry60 Voir le message
    C'est bien dommage, elle fait exactement ce dont j'ai besoin !
    Eh bien, tu n'as qu'à récupérer ce code grâce à réflector et le mettre dans une classe à toi, non?

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

Discussions similaires

  1. [Débutant] Récupérer une variable
    Par adamx dans le forum PureBasic
    Réponses: 1
    Dernier message: 03/11/2008, 10h48
  2. [Débutant] Updater une variable par un textbox
    Par roshy dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 29/04/2008, 14h56
  3. [Débutant] Générer une liste de 1 à m
    Par Treuze dans le forum Prolog
    Réponses: 12
    Dernier message: 28/03/2007, 17h52
  4. Générer une variable aléatoire gaussienne
    Par User dans le forum Probabilités
    Réponses: 5
    Dernier message: 29/06/2006, 22h58
  5. Réponses: 3
    Dernier message: 23/02/2006, 09h37

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