Projet Chiffrement uuENCODE
Le projet consistait à chiffrer un message en UUencode, un format qui remplace les caractères d’une chaîne par des caractères ASCII.
L’objectif principal de ce projet était d’augmenter nos compétences dans la compréhension du langage de programmation Python, d’apprendre à comprendre et à réécrire des fonctions existantes, tout en développant notre logique de programmation.
# Exercice 1 #
def verification_decimal(donne):
caracteres_valides= "0123456789"
for chiffre in donne:
if chiffre not in caracteres_valides:
return(False)
return(donne)
#-----------------------------------------------------#
#Exercices 2#
def verification_binaire(donne):
caracteres_valides= "01"
for chiffre in donne:
if chiffre not in caracteres_valides:
return(False)
return(donne)
#-------------------------------------------------------#
# Exercices 3 #
def verification_hexadecimal(donne):
caracteres_valides= "0123456789ABCDEFabcdef"
for chiffre in donne:
if chiffre not in caracteres_valides:
return(False)
return(donne)
#------------------------------------------------------#
# Exercice 4 #
def conversion_decimal_to_binary(nombre_1):
qt=int(verification_decimal(nombre1))
result=""
while qt>0:
rt=(qt%2)
qt=(qt//2)
result=str(rt)+str(result)
return(result)
#--------------------------------------------------------#
#Exercices 5#
def conversion_decimal_to_hexa(nombre2):
qt=int(verification_decimal(nombre2))
result=[]
while qt>0:
rt=(qt%16)
qt=(qt//16)
result.append(rt)
resultat=""
for x in result:
if x==10:
resultat="A"+resultat
elif x==11:
resultat="B"+resultat
elif x==12:
resultat="C"+resultat
elif x==13:
resultat="D"+resultat
elif x==14:
resultat="E"+resultat
elif x==15:
resultat="F"+resultat
else:
resultat=str(x)+resultat
return(resultat)
#----------------------------------------------------#
# Exercice 6 #
def inverse(nombre3):
chaine=verification_binaire(nombre3)
chaine_inverse=""
for element in chaine:
chaine_inverse=element+chaine_inverse
return(chaine_inverse)
def conversion_binary_to_decimal(nombre3):
a=inverse(nombre3)
nombre_decimal=0
puissance=0
for i in a:
nombre_decimal+=int(i)*(2**puissance)
puissance+=1
return str(nombre_decimal)
#----------------------------------------------------------#
# Exercice 7#
def verification_hexadecimal(nombre5):
caracteres_valides= "0123456789ABCDEFabcdef"
for chiffre in nombre5:
if chiffre not in caracteres_valides:
return(False)
return(donne)
def string_to_liste(nombre5):
element=verification_hexadecimal_1(nombre5)
liste =[]
for element in nombre5 :
liste.append(element)
return(liste)
def change_to_decimal(nombre5):
resultat=[]
for x in don:
if x=="A"or x=="a":
resultat.append(str(10))
elif x=="B" or x=="b":
resultat.append(str(11))
elif x=="C"or x=="c":
resultat.append(str(12))
elif x=="D" or x=="d":
resultat.append(str(13))
elif x=="E" or x=="e":
resultat.append(str(14))
elif x=="F" or x=="f":
resultat.append(str(15))
else:
resultat.append(str(x))
return(resultat)
def inverse(nombre5):
chaine=change_to_decimal(nombre5)
if type(chaine) is list :
liste_inverser=[]
c= -1
for char in chaine:
liste_inverser.append(chaine[c])
c-=1
return (liste_inverser)
def conversion_hexa_to_decimal(nombre5):
a=inverse_1(nombre5)
nombre_decimal=0
puissance=0
for i in a:
nombre_decimal+=int(i)*(16**puissance)
puissance+=1
return str(nombre_decimal)
#----------------------------------------#
#Conversion binaire à hexadecimal#
def verification_binaire_4(nombre4):
caracteres_valides="01"
for chiffre in nombre4:
if chiffre not in caracteres_valides:
return(False)
return(nombre4)
def inverse(nombre4):
chaine=verification_binaire_4(nombre4)
chaine_inverse=""
for element in chaine:
chaine_inverse=element+chaine_inverse
return(chaine_inverse)
def conversion_binary_to_decimal_4(nombre4):
a=inverse(nombre4)
nombre_decimal=0
puissance=0
for i in a:
nombre_decimal+=int(i)*(2**puissance)
puissance+=1
return str(nombre_decimal)
def verification_decimal_4(nombre4):
value=conversion_binary_to_decimal_4(nombre4)
caracteres_valides= "0123456789"
for chiffre in value:
if chiffre not in caracteres_valides:
return(False)
return(value)
def conversion_binary_to_hexa_4(nombre4):
qt=int(verification_decimal_4(nombre4))
result=[]
while qt>0:
rt=(qt%16)
qt=(qt//16)
result.append(rt)
resultat=""
for x in result:
if x==10:
resultat="A"+resultat
elif x==11:
resultat="B"+resultat
elif x==12:
resultat="C"+resultat
elif x==13:
resultat="D"+resultat
elif x==14:
resultat="E"+resultat
elif x==15:
resultat="F"+resultat
else:
resultat=str(x)+resultat
return(resultat)
#------------------------------------------#
#Conversion hexadecimal à binaire#
def verification_hexadecimal_1(nombre6):
caracteres_valides= "0123456789ABCDEFabcdef"
for chiffre in nombre6:
if chiffre not in caracteres_valides:
return(False)
return(nombre6)
def string_to_liste_1(nombre6):
element=verification_hexadecimal_1(nombre6)
liste =[]
for element in nombre6 :
liste.append(element)
return(liste)
def change_to_decimal_1(nombre6):
chaine=string_to_liste_1(nombre6)
resultat=[]
for x in nombre6:
if x=="A"or x=="a":
resultat.append(str(10))
elif x=="B" or x=="b":
resultat.append(str(11))
elif x=="C"or x=="c":
resultat.append(str(12))
elif x=="D" or x=="d":
resultat.append(str(13))
elif x=="E" or x=="e":
resultat.append(str(14))
elif x=="F" or x=="f":
resultat.append(str(15))
else:
resultat.append(str(x))
return(resultat)
def inverse_1(nombre6):
chaine=change_to_decimal_1(nombre6)
if type(chaine) is list :
liste_inverser=[]
c= -1
for char in chaine:
liste_inverser.append(chaine[c])
c-=1
return (liste_inverser)
def conversion_hexadecimal_to_decimal_1(nombre6):
a=inverse_1(nombre6)
nombre_decimal=0
puissance=0
for i in a:
nombre_decimal+=int(i)*(16**puissance)
puissance+=1
return str(nombre_decimal)
def verification_decimal_1(nombre6):
value=conversion_hexadecimal_to_decimal_1(nombre6)
caracteres_valides= "0123456789"
for chiffre in value:
if chiffre not in caracteres_valides:
return(False)
return(value)
def conversion_hexa_to_binary_1(nombre6):
qt=int(verification_decimal_1(nombre6))
result=""
while qt>0:
rt=(int(qt)%2)
qt=(int(qt)//2)
result=str(rt)+str(result)
return(result)
# Exercice 8 #
continuer = True
while continuer:
choix = '9'
while choix <"0" or choix > "6":
print("""0. Quitter le programme
1. Conversion decimal en binaire
2. Conversion decimal en hexadecimal
3. Conversion binaire en decimal
4. Conversion binaire en hexadecimal
5. Conversion hexadecimal en decimal
6. Conversion hexadecimal en binaire""")
choix = input("choix : ")
if choix == '1':
nombre1=input("Entrez votre nombre decimal (Cliquez sur 0 pour retourner au menu): ")
if nombre1 == '0':
choix = ''
else:
resultat1=conversion_decimal_to_binary(nombre1)
print(resultat1)
elif choix == '2':
nombre2= input("Entrez votre nombre decimal (Cliquez sur 0 pour retourner au menu): ")
if nombre2 == '0':
choix= ''
else:
resultat2=conversion_decimal_to_hexa(nombre2)
print(resultat2)
elif choix == '3':
nombre3= input("Entrez votre nombre binaire (Cliquez sur 0 pour retourner au menu): ")
if nombre3 == '0':
choix= ''
else:
resultat3= conversion_binary_to_decimal(nombre3)
print(resultat3)
elif choix == '4':
nombre4= input("Entrez votre nombre binaire (Cliquez sur 0 pour retourner au menu): ")
if nombre4 == '0':
choix= ''
else:
resultat4= conversion_binary_to_hexa_4(nombre4)
print(resultat4)
elif choix == '5':
nombre5= input("Entrez votre nombre hexadecimal (Cliquez sur 0 pour retourner au menu): ")
if nombre5 == '0':
choix= ''
else:
resultat5= conversion_hexa_to_decimal(nombre5)
print(resultat5)
elif choix == '6':
nombre6= input("Entrez votre nombre hexadecimal (Cliquez sur 0 pour retourner au menu): ")
if nombre6 == '0':
choix= ''
else:
resultat6= conversion_hexa_to_binary_1(nombre6)
print(resultat6)
elif choix == '0':
continuer = False
Projet Techdailly

Le projet consistait à créer un site web d’information sur l’informatique, regroupant une multitude d’articles afin de nous tenir informés et de rendre l’accès à ces informations utile et pratique.
Ce projet nous a également permis de découvrir la gestion d’un projet collaboratif en utilisant la méthode Agile.
Projet de remise en service d’une salle informatique
Pendant ce projet nous avons pu créer une infrastructure en partant de zéro et donc installer différents serveurs pour par exemple gérer les installations sur les postes clients, installer/configurer un AD, mettre un serveur de partage réseau pour tous les postes…
L’objectif de ce projet était de ce familiariser avec l’installation d’une infrastructure.

Projet de création d’une calculatrice Python
chaine=""
#"-----------------------Projet de chiffrement--------------------"#
# 0 : On demande de chaine de caractère à l'utilsateur / Par exemple l'utilsateur entre la chaine de caractères "Ok!"
# 1 : Je vérifie les élements de ma chaine en appelant ma variable "verif" / Avec l'exemple "Ok!" je dois avoir en retour une chaine de caractères "Ok!"
# 2 : On convertis la chaine en liste en appelant ma variable "chaine_liste" / On obtient [O,K,!]
# 3 : On recupere l'index de chaque caractere en appelant ma variable "liste_index"/ On doit obtenir [47,75,1]
# 4 : On rajoute 32 à chaque nombres décimaux en appelant ma variable "plus_32" / On doit obtenir ["79","107","33"]
# 5 : On convertis les index en binaire avec ma variable "liste_binaire" / On doit obtenir ['1001111', '1101011', '100001']
# 6 : On complete avec des 0 pour du format 8 bits en appelant ma variable "string_8bits"/ On doit obtenir "01001111 01101011 00100001"
# 7 : On compte le nombre de caractères en appelant ma variable "long_1"/ On doit obtenir "24"
# 8 : On passe les éléments en parties de 6 bits en appelant la variable "liste_6bits"/ On doit obtenir ['010011', '110110', '101100', '100001']
# 9 : On inverse les éléments en appelant la variable "inverse_6bits"/ On doit obtenir ["110010","011011","001101","100001"]
# 10 : On converti les nombres binaire en nombres décimaux en appelant la variable "liste_decimal"/ On doit obtenir [19, 54, 44, 33]
# 11 : On appelle les index de ascii en appelant la variable "decimal_caractere"/ On doit obtenir "3VLA"
# Ce morceau de code récupère tout les caractères Ascii et les places dans une liste
liste_ascii=[]
for c in(chr(i)for i in range (32,127)):
liste_ascii.append(c)
# Cette variable permet de vérifier les caractères Ascii rentrés dans la variable chaine du menu
def verification_caracteres(chaine):
for element in chaine:
if element not in liste_ascii:
return(False)
return True
# Cette fonction compte le nombres de caractères dans une chaine de caractères/ Elle retroune le résultat sous forme de nombre décimal
def longueur(element):
taille=0
for i in element :
taille +=1
return taille
# Cette fonction inverse chaques éléments d'une liste / Elle retourne le résultat sous forme de liste
def inverse(element):
chaine_inverse=[]
for i in element:
inverse=""
for e in i:
inverse=e+inverse
chaine_inverse.append(inverse)
element=""
return(chaine_inverse)
#Cette fonction permet de prendre l'index d'un élément dans la liste ascii
def chaine_in_liste(chaine):
liste=[]
for e in chaine:
liste.append(e)
return liste
def index_element(element):
liste=[]
for e in element :
compt= -1
for i in liste_ascii:
compt+=1
if i==e:
liste.append(compt)
return liste
# Cette fonction permet d'ajouter 32 à chaque nombres décimaux d'une liste / Elle retourne le résultat sous forme de liste
def ajout_32(liste_index):
liste=[]
for i in liste_index:
i=i+32
liste.append(i)
return liste
# Cette fonction convertis chaque nombre décimal d'une liste en nombres binaires/ Elle le retourne le résultat sous forme de liste
def conversion_decimal_to_binary(element):
result=""
liste_resultat=[]
for i in element:
result=""
qt=int(i)
while qt>0:
rt=(qt%2)
qt=(qt//2)
result=str(rt)+str(result)
liste_resultat.append(result)
return liste_resultat
# Cette fonction ajoute des "0" à chaque éléments d'une liste tant que l'élément n'est pas d'une longeur de 8 caractères/ Elle retourne le résultat sous forme de chaine
def ajustement_longueur_8(liste_binaire):
nouvelle_chaine=""
long_1=longueur(liste_binaire)
for i in liste_binaire:
long=longueur(i)
if long == 8:
nouvelle_chaine+=i
else:
while long < 8:
i = '0' + i
long+=1
if long==8:
nouvelle_chaine+=i
if long_1%3==1:
nouvelle_chaine+="0000000000000000"
elif long_1%3==2:
nouvelle_chaine+="00000000"
return nouvelle_chaine
# Cette fonction convertie chaque élement d'une liste en partie de 6 caractères/ Elle retourne le résultat sous forme de liste
def conversion_3_8_to_4_6(string_8bits):
new_liste= []
long_1=longueur(string_8bits)
for i in range(0, long_1, 6):
sous_chaine = string_8bits[i:i+6]
new_liste.append(sous_chaine)
return new_liste
# Cette fonction convertie chaques nombres binaires d'une liste en nombres décimaux/ Elle retourne le résultat sous forme de liste
def conversion_binary_to_decimal(element):
liste=[]
for i in element:
nombre_decimal=0
puissance=0
for e in str(i):
nombre_decimal+=int(e)*(2**puissance)
puissance+=1
liste.append(nombre_decimal)
return liste
# Cette fonction convertie chaque nombres décimaux en caractères Ascii / Elle le retourne sous forme de chaine de caractères
def decimal_to_caractere(element):
string=""
for i in element :
if int(i)<0 or int(i)>94:
return False
else:
string+= liste_ascii[i]
return string
#"-----------------------Projet de déchiffrement--------------------"#
# 0 : On demande de chaine de caractère à l'utilsateur / Par exemple l'utilsateur entre la chaine de caractères "3VLA"
# 1 : Je vérifie les élements de ma chaine en appelant ma variable "verif"
# 2 : On convertis la chaine en liste en appelant ma variable "chaine_liste"/ On obtient [3,V,L,A]
# 3 : On recupère l'index de chaque caractères en appelant ma variable "liste_index"/ On doit obtenir [19,54,44,33]
# 4 : Je convertie mes nombres décimaux en nombre binaire "liste_binaire_2"/ On doit obtenir ["10011","110110", "101100", "100001"]
# 5 : On ajuste la longeur des nombres binaires pour avoir des partie de 8 bits "liste_8bits"/ On doit obtenir "010011110110101100100001"
# 6 : On compte le nombre de caractères en appelant la fonction "long_2"/ On doit avoir 24 caractères
# 7 : On passe les éléments en parties de 8 bits en appelant la fonction "liste_8bits"/ On doit obtenir ["01001111" "01101011" "00100001"]
# 8 : On inverse les éléments en appelant la fonction "inverse_8bits"/ On doit obtenir ["11110010" "11010110" "10000100"]
# 9 : On converti les nombres binaires en nombres décimaux en appelant la fonction "liste_dec_2"/ On doit obtenir [47,75,1]
# 10 : On soustraie 32 au à chaque élement de "liste_decimal" [126,89,199]
# 11 : On appelle les index de ascii en appelant la fonction "decimal_caractere_2"/ On doit obtenir "OK!"
# Cette fonction permet de soustraire 32 à chaque nombres décimaux d'une liste / Elle retourne le résultat sous forme de liste
def soustraction_32(liste_dec_2):
liste=[]
for i in liste_dec_2:
i=i-32
liste.append(i)
return liste
# Cette fonction ajoute des "0" à chaque éléments d'une liste tant que l'élément n'est pas d'une longeur de 6 caractères/ Elle retourne le résultat sous forme de chaîne
def ajustement_longueur_6(liste_binaire):
nouvelle_chaine=""
long_1=longueur(liste_binaire)
for i in liste_binaire:
long=longueur(i)
if long == 6:
nouvelle_chaine+=i
else:
while long < 6:
i = '0' + i
long+=1
if long==6:
nouvelle_chaine+=i
if long_1%4==1:
nouvelle_chaine+="000000000000000000"
elif long_1%4==2:
nouvelle_chaine+="000000000000"
elif long_1%4==3:
nouvelle_chaine+="000000"
return nouvelle_chaine
# # Cette fonction convertie chaque élement d'une liste en partie de 8 caractères/ Elle retourne le résultat sous forme de liste
def conversion_4_6_to_3_8(string_6bits):
new_liste= []
long_2=longueur(string_6bits)
for i in range(0, long_2, 8):
sous_chaine = string_6bits[i:i+8]
new_liste.append(sous_chaine)
return new_liste
#----------------------------Menu------------------------------#
continuer = True
while continuer:
choix="9"
while choix<"0" or choix> "2":
print("""_______Bienvenue dans mon projet de chiffrement et de déchiffrement UUencode_______
--Veuillez sélectionner l'option que vous désirez--
---------------------------------------------------
0. Vous quitterez le programme
1. Vous serez dirigé dans le menu de chiffrement ASCII
2. Vous serez dirigé dans le menu de déchiffrement ASCII""")
choix= input("choix : ")
if choix =='0':
exit()
elif choix == '1':
continuer= '1'
while continuer == '1' :
# On demande de chaine de caractère à l'utilsateur
chaine=input("""_______Bienvenue dans le menu de chiffrement UUencode_______
--Veuillez entrer la chaîne de caractères que vous souhaitez chiffrer--
-----------------------------------------------------------------------
- Si vous n'entrez aucune valeur, vous retournerez au menu principal
- Veuillez entrer uniquement des caractères ASCII :
""")
long=longueur(chaine)
# Condition qui redirige au menu
if continuer =='0':
choix=''
# Option qui permet le retour au menu
elif chaine == '':
continuer='0'
else:
# Je vérifie les élements de ma chaine en appelant ma variable "verif"
verif=verification_caracteres(chaine)
# Si des caractères autres que des caractères Ascii sont entrés, le programme précisera une erreur et demandera de recommencer
if verif==False:
print("""Une erreur c'est produite, veuillez entrer uniquement des caractères ASCII
Vous êtes revenu au menu de déchiffrement
""")
continuer ='1'
else:
# Ces variables correspondent au projet de chiffrement!
chaine_liste=chaine_in_liste(chaine)
liste_index =index_element(chaine_liste)
plus_32= ajout_32(liste_index)
liste_binaire = conversion_decimal_to_binary(plus_32)
string_8bits = ajustement_longueur_8(liste_binaire)
long_1= longueur(string_8bits)
liste_6bits=conversion_3_8_to_4_6(string_8bits)
inverse_6bits=inverse(liste_6bits)
liste_decimal=conversion_binary_to_decimal(inverse_6bits)
decimal_caractere=decimal_to_caractere(liste_decimal)
if decimal_caractere == False :
print("""Une erreur c'est produite, veuillez entrer uniquement des caractères ASCII
Vous êtes revenu au menu de chiffrement
""")
continuer = '1'
else:
print('Le chiffrement de cette chaîne de caractères correspond à', decimal_caractere)
new_chaine=input("""Voulez-vous chiffrer une autre chaîne de caractères ?
1. Non
2. Oui
3. Quitter le programme
Si vous sélectionnez une autre option que celles affichés vous retournerez au menu principal
""")
if new_chaine == '1':
continuer ='0'
elif new_chaine == '2':
continuer= '1'
elif new_chaine== '3':
exit()
elif new_chaine != '1'or'2'or'3':
continuer='0'
elif choix == '2':
continuer= '2'
while continuer == '2' :
# On demande de chaine de caractères à l'utilsateur
chaine=input("""_______Bienvenue dans le menu de déchiffrement UUencode_______
--Veuillez entrez la chaîne de caractères que vous souhaitez déchiffrer--
-------------------------------------------------------------------------
- Si vous n'entrez aucune valeur, vous retournerez au menu principal
- Veuillez entrez uniquement des caractères ASCII :
""")
# Condition qui redirige au menu
if continuer =='0':
choix=''
# Option qui permet le retour au menu
elif chaine == '':
continuer='0'
else:
# Je vérifie les élements de ma chaine en appelant ma variable "verif"
verif=verification_caracteres(chaine)
# Si des caractères autres que des caractères Ascii sont entrés, le programme précisera une erreur et demandera de recommencer
if verif==False:
print("""Une erreur c'est produite, veuillez entrer uniquement des caractères ASCII
Vous êtes revenu au menu de déchiffrement ASCII
""")
continuer ='2'
else:
# Ces variables correspondent au projet de déchiffrement!
chaine_liste=chaine_in_liste(chaine)
liste_index= index_element(chaine_liste)
liste_binaire_2=conversion_decimal_to_binary(liste_index)
string_6bits= ajustement_longueur_6(liste_binaire_2)
long_2= longueur(string_6bits)
liste_8bits=conversion_4_6_to_3_8(string_6bits)
inverse_8bits=inverse(liste_8bits)
liste_dec_2=conversion_binary_to_decimal(inverse_8bits)
soustraction=soustraction_32(liste_dec_2)
decimal_caractere_2=decimal_to_caractere(soustraction)
if decimal_caractere_2== False :
print("""Une erreur c'est produite veuillez entrez des caractères qui ont déjà étaient chiffrés
Vous êtes revenu au menu de déchiffrement ASCII
""")
continuer = '2'
else:
print('Le déchiffrement de cette chaîne de caractères correspond à', decimal_caractere_2)
# On redemande à l'utilsateur si il veut chiffrer une autre chaîne de caractères.
new_chaine=input("""Voulez-vous chiffrer une autre chaîne de caractères ?
1. Non
2. Oui
3. Quitter le programme
Si vous sélectionnez une autre option que celles affichés vous retournerez au menu principal
""")
if new_chaine == '1':
continuer ='0'
elif new_chaine == '2':
continuer= '2'
elif new_chaine== '3':
exit()
elif new_chaine != '1'or'2'or'3':
continuer='0'
Le projet consistait à développer une calculatrice capable de réaliser plusieurs conversions :
- convertir des nombres binaires en décimaux et hexadécimaux,
- convertir des nombres décimaux en binaires et hexadécimaux,
- convertir des nombres hexadécimaux en binaires et décimaux.
L’objectif de ce projet était de nous familiariser avec le langage de programmation en Python, tout en apprenant à comprendre et à réécrire des fonctions existantes.
Projet de création de génération de mot de passe
chaine=""#"-----------------------Projet de chiffrement--------------------"#
# 0 : On demande de chaine de caractère à l'utilsateur / Par exemple l'utilsateur entre la chaine de caractères "Ok!"
# 1 : Je vérifie les élements de ma chaine en appelant ma variable "verif" / Avec l'exemple "Ok!" je dois avoir en retour une chaine de caractères "Ok!"
# 2 : On convertis la chaine en liste en appelant ma variable "chaine_liste" / On obtient [O,K,!]
# 3 : On recupere l'index de chaque caractere en appelant ma variable "liste_index"/ On doit obtenir [47,75,1]
# 4 : On rajoute 32 à chaque nombres décimaux en appelant ma variable "plus_32" / On doit obtenir ["79","107","33"]
# 5 : On convertis les index en binaire avec ma variable "liste_binaire" / On doit obtenir ['1001111', '1101011', '100001']
# 6 : On complete avec des 0 pour du format 8 bits en appelant ma variable "string_8bits"/ On doit obtenir "01001111 01101011 00100001"
# 7 : On compte le nombre de caractères en appelant ma variable "long_1"/ On doit obtenir "24"
# 8 : On passe les éléments en parties de 6 bits en appelant la variable "liste_6bits"/ On doit obtenir ['010011', '110110', '101100', '100001']
# 9 : On inverse les éléments en appelant la variable "inverse_6bits"/ On doit obtenir ["110010","011011","001101","100001"]
# 10 : On converti les nombres binaire en nombres décimaux en appelant la variable "liste_decimal"/ On doit obtenir [19, 54, 44, 33]
# 11 : On appelle les index de ascii en appelant la variable "decimal_caractere"/ On doit obtenir "3VLA"
# Ce morceau de code récupère tout les caractères Ascii et les places dans une liste
liste_ascii=[]
for c in(chr(i)for i in range (32,127)):
liste_ascii.append(c)
# Cette variable permet de vérifier les caractères Ascii rentrés dans la variable chaine du menu
def verification_caracteres(chaine):
for element in chaine:
if element not in liste_ascii:
return(False)
return True
# Cette fonction compte le nombres de caractères dans une chaine de caractères/ Elle retroune le résultat sous forme de nombre décimal
def longueur(element):
taille=0
for i in element :
taille +=1
return taille
# Cette fonction inverse chaques éléments d'une liste / Elle retourne le résultat sous forme de liste
def inverse(element):
chaine_inverse=[]
for i in element:
inverse=""
for e in i:
inverse=e+inverse
chaine_inverse.append(inverse)
element=""
return(chaine_inverse)
#Cette fonction permet de prendre l'index d'un élément dans la liste ascii
def chaine_in_liste(chaine):
liste=[]
for e in chaine:
liste.append(e)
return liste
def index_element(element):
liste=[]
for e in element :
compt= -1
for i in liste_ascii:
compt+=1
if i==e:
liste.append(compt)
return liste
# Cette fonction permet d'ajouter 32 à chaque nombres décimaux d'une liste / Elle retourne le résultat sous forme de liste
def ajout_32(liste_index):
liste=[]
for i in liste_index:
i=i+32
liste.append(i)
return liste
# Cette fonction convertis chaque nombre décimal d'une liste en nombres binaires/ Elle le retourne le résultat sous forme de liste
def conversion_decimal_to_binary(element):
result=""
liste_resultat=[]
for i in element:
result=""
qt=int(i)
while qt>0:
rt=(qt%2)
qt=(qt//2)
result=str(rt)+str(result)
liste_resultat.append(result)
return liste_resultat
# Cette fonction ajoute des "0" à chaque éléments d'une liste tant que l'élément n'est pas d'une longeur de 8 caractères/ Elle retourne le résultat sous forme de chaine
def ajustement_longueur_8(liste_binaire):
nouvelle_chaine=""
long_1=longueur(liste_binaire)
for i in liste_binaire:
long=longueur(i)
if long == 8:
nouvelle_chaine+=i
else:
while long < 8:
i = '0' + i
long+=1
if long==8:
nouvelle_chaine+=i
if long_1%3==1:
nouvelle_chaine+="0000000000000000"
elif long_1%3==2:
nouvelle_chaine+="00000000"
return nouvelle_chaine
# Cette fonction convertie chaque élement d'une liste en partie de 6 caractères/ Elle retourne le résultat sous forme de liste
def conversion_3_8_to_4_6(string_8bits):
new_liste= []
long_1=longueur(string_8bits)
for i in range(0, long_1, 6):
sous_chaine = string_8bits[i:i+6]
new_liste.append(sous_chaine)
return new_liste
# Cette fonction convertie chaques nombres binaires d'une liste en nombres décimaux/ Elle retourne le résultat sous forme de liste
def conversion_binary_to_decimal(element):
liste=[]
for i in element:
nombre_decimal=0
puissance=0
for e in str(i):
nombre_decimal+=int(e)*(2**puissance)
puissance+=1
liste.append(nombre_decimal)
return liste
# Cette fonction convertie chaque nombres décimaux en caractères Ascii / Elle le retourne sous forme de chaine de caractères
def decimal_to_caractere(element):
string=""
for i in element :
if int(i)<0 or int(i)>94:
return False
else:
string+= liste_ascii[i]
return string
#"-----------------------Projet de déchiffrement--------------------"#
# 0 : On demande de chaine de caractère à l'utilsateur / Par exemple l'utilsateur entre la chaine de caractères "3VLA"
# 1 : Je vérifie les élements de ma chaine en appelant ma variable "verif"
# 2 : On convertis la chaine en liste en appelant ma variable "chaine_liste"/ On obtient [3,V,L,A]
# 3 : On recupère l'index de chaque caractères en appelant ma variable "liste_index"/ On doit obtenir [19,54,44,33]
# 4 : Je convertie mes nombres décimaux en nombre binaire "liste_binaire_2"/ On doit obtenir ["10011","110110", "101100", "100001"]
# 5 : On ajuste la longeur des nombres binaires pour avoir des partie de 8 bits "liste_8bits"/ On doit obtenir "010011110110101100100001"
# 6 : On compte le nombre de caractères en appelant la fonction "long_2"/ On doit avoir 24 caractères
# 7 : On passe les éléments en parties de 8 bits en appelant la fonction "liste_8bits"/ On doit obtenir ["01001111" "01101011" "00100001"]
# 8 : On inverse les éléments en appelant la fonction "inverse_8bits"/ On doit obtenir ["11110010" "11010110" "10000100"]
# 9 : On converti les nombres binaires en nombres décimaux en appelant la fonction "liste_dec_2"/ On doit obtenir [47,75,1]
# 10 : On soustraie 32 au à chaque élement de "liste_decimal" [126,89,199]
# 11 : On appelle les index de ascii en appelant la fonction "decimal_caractere_2"/ On doit obtenir "OK!"
# Cette fonction permet de soustraire 32 à chaque nombres décimaux d'une liste / Elle retourne le résultat sous forme de liste
def soustraction_32(liste_dec_2):
liste=[]
for i in liste_dec_2:
i=i-32
liste.append(i)
return liste
# Cette fonction ajoute des "0" à chaque éléments d'une liste tant que l'élément n'est pas d'une longeur de 6 caractères/ Elle retourne le résultat sous forme de chaîne
def ajustement_longueur_6(liste_binaire):
nouvelle_chaine=""
long_1=longueur(liste_binaire)
for i in liste_binaire:
long=longueur(i)
if long == 6:
nouvelle_chaine+=i
else:
while long < 6:
i = '0' + i
long+=1
if long==6:
nouvelle_chaine+=i
if long_1%4==1:
nouvelle_chaine+="000000000000000000"
elif long_1%4==2:
nouvelle_chaine+="000000000000"
elif long_1%4==3:
nouvelle_chaine+="000000"
return nouvelle_chaine
# # Cette fonction convertie chaque élement d'une liste en partie de 8 caractères/ Elle retourne le résultat sous forme de liste
def conversion_4_6_to_3_8(string_6bits):
new_liste= []
long_2=longueur(string_6bits)
for i in range(0, long_2, 8):
sous_chaine = string_6bits[i:i+8]
new_liste.append(sous_chaine)
return new_liste
#----------------------------Menu------------------------------#
continuer = True
while continuer:
choix="9"
while choix<"0" or choix> "2":
print("""_______Bienvenue dans mon projet de chiffrement et de déchiffrement UUencode_______
--Veuillez sélectionner l'option que vous désirez--
---------------------------------------------------
0. Vous quitterez le programme
1. Vous serez dirigé dans le menu de chiffrement ASCII
2. Vous serez dirigé dans le menu de déchiffrement ASCII""")
choix= input("choix : ")
if choix =='0':
exit()
elif choix == '1':
continuer= '1'
while continuer == '1' :
# On demande de chaine de caractère à l'utilsateur
chaine=input("""_______Bienvenue dans le menu de chiffrement UUencode_______
--Veuillez entrer la chaîne de caractères que vous souhaitez chiffrer--
-----------------------------------------------------------------------
- Si vous n'entrez aucune valeur, vous retournerez au menu principal
- Veuillez entrer uniquement des caractères ASCII :
""")
long=longueur(chaine)
# Condition qui redirige au menu
if continuer =='0':
choix=''
# Option qui permet le retour au menu
elif chaine == '':
continuer='0'
else:
# Je vérifie les élements de ma chaine en appelant ma variable "verif"
verif=verification_caracteres(chaine)
# Si des caractères autres que des caractères Ascii sont entrés, le programme précisera une erreur et demandera de recommencer
if verif==False:
print("""Une erreur c'est produite, veuillez entrer uniquement des caractères ASCII
Vous êtes revenu au menu de déchiffrement
""")
continuer ='1'
else:
# Ces variables correspondent au projet de chiffrement!
chaine_liste=chaine_in_liste(chaine)
liste_index =index_element(chaine_liste)
plus_32= ajout_32(liste_index)
liste_binaire = conversion_decimal_to_binary(plus_32)
string_8bits = ajustement_longueur_8(liste_binaire)
long_1= longueur(string_8bits)
liste_6bits=conversion_3_8_to_4_6(string_8bits)
inverse_6bits=inverse(liste_6bits)
liste_decimal=conversion_binary_to_decimal(inverse_6bits)
decimal_caractere=decimal_to_caractere(liste_decimal)
if decimal_caractere == False :
print("""Une erreur c'est produite, veuillez entrer uniquement des caractères ASCII
Vous êtes revenu au menu de chiffrement
""")
continuer = '1'
else:
print('Le chiffrement de cette chaîne de caractères correspond à', decimal_caractere)
new_chaine=input("""Voulez-vous chiffrer une autre chaîne de caractères ?
1. Non
2. Oui
3. Quitter le programme
Si vous sélectionnez une autre option que celles affichés vous retournerez au menu principal
""")
if new_chaine == '1':
continuer ='0'
elif new_chaine == '2':
continuer= '1'
elif new_chaine== '3':
exit()
elif new_chaine != '1'or'2'or'3':
continuer='0'
elif choix == '2':
continuer= '2'
while continuer == '2' :
# On demande de chaine de caractères à l'utilsateur
chaine=input("""_______Bienvenue dans le menu de déchiffrement UUencode_______
--Veuillez entrez la chaîne de caractères que vous souhaitez déchiffrer--
-------------------------------------------------------------------------
- Si vous n'entrez aucune valeur, vous retournerez au menu principal
- Veuillez entrez uniquement des caractères ASCII :
""")
# Condition qui redirige au menu
if continuer =='0':
choix=''
# Option qui permet le retour au menu
elif chaine == '':
continuer='0'
else:
# Je vérifie les élements de ma chaine en appelant ma variable "verif"
verif=verification_caracteres(chaine)
# Si des caractères autres que des caractères Ascii sont entrés, le programme précisera une erreur et demandera de recommencer
if verif==False:
print("""Une erreur c'est produite, veuillez entrer uniquement des caractères ASCII
Vous êtes revenu au menu de déchiffrement ASCII
""")
continuer ='2'
else:
# Ces variables correspondent au projet de déchiffrement!
chaine_liste=chaine_in_liste(chaine)
liste_index= index_element(chaine_liste)
liste_binaire_2=conversion_decimal_to_binary(liste_index)
string_6bits= ajustement_longueur_6(liste_binaire_2)
long_2= longueur(string_6bits)
liste_8bits=conversion_4_6_to_3_8(string_6bits)
inverse_8bits=inverse(liste_8bits)
liste_dec_2=conversion_binary_to_decimal(inverse_8bits)
soustraction=soustraction_32(liste_dec_2)
decimal_caractere_2=decimal_to_caractere(soustraction)
if decimal_caractere_2== False :
print("""Une erreur c'est produite veuillez entrez des caractères qui ont déjà étaient chiffrés
Vous êtes revenu au menu de déchiffrement ASCII
""")
continuer = '2'
else:
print('Le déchiffrement de cette chaîne de caractères correspond à', decimal_caractere_2)
# On redemande à l'utilsateur si il veut chiffrer une autre chaîne de caractères.
new_chaine=input("""Voulez-vous chiffrer une autre chaîne de caractères ?
1. Non
2. Oui
3. Quitter le programme
Si vous sélectionnez une autre option que celles affichés vous retournerez au menu principal
""")
if new_chaine == '1':
continuer ='0'
elif new_chaine == '2':
continuer= '2'
elif new_chaine== '3':
exit()
elif new_chaine != '1'or'2'or'3':
continuer='0'