Cryptage XOR - besoin d'aide URGENT !!

Messages postés
1
Date d'inscription
mercredi 11 janvier 2017
Dernière intervention
11 janvier 2017
- - Dernière réponse : hbouia
Messages postés
90
Date d'inscription
mardi 30 juillet 2013
Dernière intervention
22 novembre 2018
- 11 janv. 2017 à 19:07
Bonjour,
Voila, j'ai un miniprojet à rendre pour ce vendredi et je suis un peu dans la moise !! Je n'arrive pas à finir mon cryptage XOR, j'ai fais le gros de mon programme mais je ne vois pas ce qui va pas et comment finaliser ! Si quelqu'un pourrait m'aider ceci me sera d'une aide très très précieuse. Voici mon programme :
 
#---importations des modules---#
from math import *
from random import randrange

#---Définition du XOR---#
def xor(a,b):
    return( a and not(b)) or (not(a) and b)

    
#---Définition du GRANDXOR---#
def GRANDXOR(Binaire,Binairedelacle):
    for loop in range(7):
        z = xor(Binairedelacle[loop], Binaire[loop])
        Binaire[loop] = z
    return Binaire


#---Champ de texte---#
Texteacrypter = input()
clebinaire = input()

#---Liste des lettres à crypter---#
liste = list(Texteacrypter)
tailledelaliste = len(liste)
ASCII=[]
Binaire=[]
ASCIIdelacle=[]
Binairedelacle=[]
Messageacrypter=[]
Codebinaire=[]

#---1ère étape : codage en code ASCII---#
for car in Texteacrypter:
   e=ord(car)
   ASCII.append(e)   
   
for car in clebinaire:
   f=ord(car)
   ASCIIdelacle.append(f)

print('ASCII : ', ASCII)
print('ASCII de la clé :', ASCIIdelacle)

#---2nde étape : codage en binaire---#
for car in ASCII:
    c=bin(car)
    Binaire.append(c)
    
for car in ASCIIdelacle:
    d=bin(car)
    Binairedelacle.append(d)
    
print('Binaire :', Binaire)
print('Binaire de la cle', Binairedelacle)

#---Lirelaliste---#
for compteur in range((len(Binaire))):
    Codebinaire=[]
    Codebinaire=[compteur%(len(Binairedelacle))]
print(Codebinaire)

#---Utilisation du GRANDXOR---#
Xordumessage = GRANDXOR(Binaire,Binairedelacle)
print(Xordumessage)
Afficher la suite 

Votre réponse

1 réponse

Messages postés
90
Date d'inscription
mardi 30 juillet 2013
Dernière intervention
22 novembre 2018
0
Merci
Bonjour,

1) La ligne 59 n'a pas lieu d'être.
2) Attention à l'utilisation de la fonction bin (par exemple bin(2) et bin(66) n'ont pas le même nombre de caractères) :
bin(2)='0b10'
bin(66)='0b1000010'

Un conseil : on peut convertir un nombre en base 2 sur 8 digits (suffisants pour les caractères ASCII).

Exemple (mais attention à l'ordre des chiffres) :
def Convert_Base2(n):
resultat=[]
while n>0:
resultat.append(n%2)
n=n//2
return resultat+[0]*(8-len(resultat))


Bon courage !
hb
Commenter la réponse de hbouia

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.