S'agit-il de La Disparition, livre de Georges Perec où il manque une certaine lettre ?Citation
nicola
Et pour mon autre proposition, personne n’a relevé la référence ni la contrainte ?
Disons-le, carrément impossibleCitation
tuxfanch
afficher sa propre somme md5, c'est aussi simple que l'initial ; par contre le foutre en dur
(commentaire ?) dans le code, ça risque d'être
longuet
Cf mon commentaire plus hautCitation
tuxfanch
Calcul de la signature -> écriture de la
signature en commentaire dans le fichier -> le
fichier a changé donc la signature a changé, donc
celle marquée en commentaire est fausse -> on
recalcule -> on ré-écrit -> pof, la
signature est encore fausse.
Citation
Raph__
Vos subtilités sont bien mignones, mais je crois qu'un petit problème de programmation serait plus intéressant.
Citation
Sve@r
D'un point de vue mathématique, il faut arriver à trouver "x" tel que "md5(x)=x"
D'un point de vue informatique, il faut rétro-analyser "md5" pour pouvoir calculer "x" à partir du résultat de "md5(x)". Cela revient à briser "md5" qui, rapellons-le, est utilisé comme système d'authentification des mots de passe Unix. Je pense que certains ont vu un petit-peu haut en matière de mini-défi ...
Citation
Glorfindel
Eh eh... Ca pourrait être sympa comme idée...
Par exemple (s'il n'est pas copyrigth) un ensemble
de softs du jeu de Marienbad, avec un moteur de
résolution en pure ligne de commande et un frontal
graphique séparé. Tous les langages acceptés bien
sur...
En plus c'est un jeu... Ce sera plus sympa de
montrer ça au enfants qu'un frontal de calcul
MD5...
Le moteur est à priori codable en strictement
tout, même en bash. On doit même pouvoir en faire
des versions xinetd et jouer à distance avec des
moteurs différents et déportés.
Chaque frontal doit pouvoir fonctionner avec
chaque moteur bien sur, et inversement...
Le frontal graphique permettrait de comparer à la
fois les approches choisies et les ressources
mises en oeuvre avec les différentes
bibliothèques.
Et le fin du fin après, la création de paquetages
pour les différentes distribs.
Et ensuite si ça a plu, on fait évoluer cela vers
certaines versions de taquin, topologiquement plus
complexes et mettant en jeu une belle petite
récursivité...
Faudrait des candidatures sur chaque module avec
différents langages...
Le défi ne serait pas individuel mais commun, et
pourrait donner lieu ensuite à quelques articles
comparatifs..
A vos pensées.
Linux user # 386486 (et en plus je tourne sur un
athlon64 hi hi hi...).
#!/usr/bin/env python # -*- coding:iso8859 -*- import pygtk import gtk import md5 class CMainWindow: :-)""" :-)Classe principale d'affichage de la fenêtre :-)""" :-)#Callback du bouton "calculer !" :-)#cette méthode est privée, c'est pourquoi elle commence par __ :-)def __btnCalc_clicked(self, widget, data=None): :-):-)#Lecture de la chaine a encoder :-):-)strBuffer = self.entClear.get_text() :-):-)#Creation de la signature MD5 :-):-)md5Signature = md5.new(strBuffer) :-):-)#Affichage du resultat :-):-)self.lblResult.set_text(md5Signature.hexdigest()) :-)#Callback de fermeture de la fenêtre :-)def __delete_event(self, widget, event, data=None): :-):-)#return False autorise la fermeture de la fenêtre :-):-)#si on met return True alors on ne peut fermer :-):-)#la fenêtre en cliquant sur la croix en haut à droite :-):-)return False :-)#Callback de destruction :-)#fermeture réelle de la fenêtre :-)def __destroy(self, widget, data=None): :-):-)gtk.main_quit() :-)#Constructeur :-)def __init__(self): :-):-)#Creation de la fenêtre :-):-)self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) :-):-)#connexion du signal de destruction :-):-)self.window.connect("destroy", self.__destroy) :-):-)#Création du bouton :-):-)self.btnCalc = gtk.Button("Calculer !") :-):-)#Connexion de la Callback du bouton :-):-)self.btnCalc.connect("clicked", self.__btnCalc_clicked, None) :-):-)#Création de la gtkEntry :-):-)self.entClear = gtk.Entry(max=0) :-):-)#Création du gtkLabel :-):-)self.lblResult = gtk.Label("") :-):-)#Création de la VBox principale :-):-)self.Box = gtk.VBox() :-):-)#Packaging des widgets :-):-)self.Box.pack_start(self.entClear) :-):-)self.Box.pack_start(self.lblResult) :-):-)self.Box.pack_start(self.btnCalc) :-):-)#Ajout de la box à la fenêtre :-):-)self.window.add(self.Box) :-):-)#Visibilité des widgets :-):-)self.window.show_all() :-)#Méthode de lancement de l'interface :-)def main(self): :-):-)gtk.main() if __name__ == "__main__": :-)Defi1 = CMainWindow() :-)Defi1.main()
Citation
Tuxfanch
Raph__ : dans mes souvenirs, une commande bash permet de lire une entrée sans qu'elle soit affichée à l'écran, à partir de là, il suffit de faire une fausse commande su qui trace ce qui va bien puis qui lance un vrai su ? sinon, en jouant avec termio.h, ça doit le faire ... (enfin je dis ça, j'ai pas réfléchi).
C'est là que c'est le plus intéressant. Je n'ai pas encore essayer, mais je pense qu'on risque d'être limité par le fait qu'il faudra surement ouvrir /dev/console et que seul root peut le faire.Citation
Tuxfanch
sinon, en jouant avec termio.h