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

Python Discussion :

Crypto à l'aide de python


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 9
    Par défaut Crypto à l'aide de python
    Bonsoir,

    j'aurais besoin d'aide pour l'algorithme du DES.
    Voici l'énoncé que j'ai :
    Donner le programme permettant de chiffrer un message via DES, puis de le déchiffrer.
    L'utilisateur saisit son message, son mot de passe (c'est à dire un tableau de clés). Les permutations seront définies dans le code source du programme (celles de votre choix). Les permutations inverse seront calculées par le programme. Il est demandé d'expliquer en détail comment a été déterminé l'algo de déchiffrement.

    A la base il s'agit d'un message ASCII par blocs de 8 caractères en 16 tours avec l'algorithme DES.

    En classe, nous avions fait un algo pour deux permutations en classe. J'ai repris la même chose sauf que cette fois-ci j'insère 16 permutations.
    Ca ne marche pas je ne sais pas vraiment comment faire...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    mot_clair=input("Saisir votre message secret:")
     
    tperm=[[2,1,0],[1,0,2],[2,2,2],[3,1,1],[1,2,2],[3,2,1],[3,3,3],[2,0,3],[4,0,1],[4,3,2],[1,1,1],[4,5,2],[5,0,0],[3,3,1],[5,0,1],[4,4,4]]       
    tcles=[[4,1,9],[35,2,8],[33,5,4],[5,20,37],[2,7,6],[22,21,25],[21,22,23],[10,13,15],[2,2,1],[11,11,11],[12,13,24],[20,20,20],[25,23,24],[14,14,14],[7,8,9],[5,2,3]]
     
    def permute(m,perm): #m et perm ont meme longueur
    	return "".join([m[perm[i]] for i in range(len(m))
     
    def Vigenere(m,cle): #m et cle ont meme longueur
    	return "".join([chr((ord(m[i])+cle[i])%256) for i in range(len(m))])
     
    def DES_BLOC(m,tperm,tcles):
    	p=len(m)//2
    	for i in range(len(tperm)):
    		m=m[p:p+p]+Vigenere(permute(m[0:p],perm[i]),tcles[i])
    	return m
     
    def DES_phrase(phrase,tperm,tlces,LBloc):#LBloc=2p
    	phrase+=(LBloc-len(phrase)%LBloc)*" "
    	phrase_crypte=""
    	for i in range(0,len(phrase),LBloc): 
    		phrase_crypte+=DES_bloc(phrase[i:i+LBloc],tperm,tcles)
    	return phrase_crypte
    Svp si quelqu'un pouvait m'aider ...

  2. #2
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617
    Par défaut
    Un début de correction...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    mot_clair=input("Saisir votre message secret:")
     
    tperm=[[2,1,0],[1,0,2],[2,2,2],[3,1,1],[1,2,2],[3,2,1],[3,3,3],[2,0,3],[4,0,1],[4,3,2],[1,1,1],[4,5,2],[5,0,0],[3,3,1],[5,0,1],[4,4,4]]       
    tcles=[[4,1,9],[35,2,8],[33,5,4],[5,20,37],[2,7,6],[22,21,25],[21,22,23],[10,13,15],[2,2,1],[11,11,11],[12,13,24],[20,20,20],[25,23,24],[14,14,14],[7,8,9],[5,2,3]]
     
    def permute(m,perm): #m et perm ont meme longueur
        return "".join(m[perm[i]] for i in range(len(m)))
     
     
    def Vignere(m,cle): #m et cle ont meme longueur
        return "".join([chr((ord(m[i])+cle[i])%256) for i in range(len(m))])
     
     
    def DES_BLOC(m,tperm,tcles):
        p=len(m)//2
        for i in range(len(tperm)):
            m=m[p:p+p]+Vignere(permute(m[0:p],tperm[i]),tcles[i])
        return m
     
    def DES_phrase(phrase,tperm,tcles,LBloc):#LBloc=2p
        phrase+=(LBloc-len(phrase)%LBloc)*" "
        phrase_crypte=""
        for i in range(0,len(phrase),LBloc): 
            phrase_crypte+=DES_BLOC(phrase[i:i+LBloc],tperm,tcles)
        return phrase_crypte

  3. #3
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 9
    Par défaut
    Bonsoir merci beaucoup de ta réponse mais je ne vois pas ce qui a changé dans le nouveau code, si tu pouvais m'expliquer ... ;(

  4. #4
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 9
    Par défaut
    Ah si en fait j'ai vu les petits soucis,
    merci mais du coup y a-t-il des problèmes de "principe" ou de logique dans le code car pour moi il me semble qu'il n'y a rien à changer à part le nombre de clés...
    Par contre mon second souci est de faire rentrer le tableau de clés, j'ai pensé à la fonction append qui permet de rajouter à une liste mais je ne vois pas comment faire ça avec un tableau. comme cela est demandé dans l'énoncé...
    merci ...

  5. #5
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617
    Par défaut
    Je ne connais cette méthode que de nom (et de loin) : pour t'aider, il serait peut-être bon que tu fournisses le code pour les 2 permutations avant de passer à 16...

  6. #6
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 9
    Par défaut
    Bonsoir, merci de la réponse,

    le code pour deux permutations est exactement le même à la différence près qu'il n'y avait que deux éléments dans tclés et tperm...
    Or vu que le nombre de permutations est égal à tperm donc 16, cela devrait aller tout seul mais ça ne marche pas et je ne vois pas où réside le souci...;(

Discussions similaires

  1. Aide sous Python 3.1
    Par david1865 dans le forum Général Python
    Réponses: 5
    Dernier message: 13/09/2010, 12h21
  2. aide programme python!
    Par ano33 dans le forum Général Python
    Réponses: 4
    Dernier message: 28/04/2010, 16h54
  3. aide exercice python
    Par cedric190985 dans le forum Général Python
    Réponses: 2
    Dernier message: 24/03/2010, 12h57
  4. Aide Syntaxe Python
    Par ziska dans le forum Général Python
    Réponses: 15
    Dernier message: 03/10/2009, 08h52
  5. Aide sur python et CGI dans un cas particulier
    Par Papaillou dans le forum Réseau/Web
    Réponses: 0
    Dernier message: 11/04/2009, 17h37

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