Bibm@th

Forum de mathématiques - Bibm@th.net

Bienvenue dans les forums du site BibM@th, des forums où on dit Bonjour (Bonsoir), Merci, S'il vous plaît...

Vous n'êtes pas identifié(e).

#1 Re : Programmation » Casser un chiffre de César avec Fortran » 10-02-2024 14:32:57

DrStone a écrit :

On peut tout faire, cher gielev !
J'aime beaucoup CodeGolf sur lequel je passe beaucoup trop de temps à implémenter mes propres solutions (les plus courtes) aux problèmes postés. Si jamais tu veux (comme moi) t'amuser à programmer des trucs inutilement court, voici le lien concernant le chiffrement de César.

Merci. Je ne connaissais pas ces challenges.
Le truc le plus "génial" est le SFAX sur 2 bytes.
Mais je n'ai pas encore compris la façon d'accéder à ce qui se cache derrière " ç' "
A voir de plus près...

Edit : c'est fait

éÉ╗;l¶m«á╧Jφµ¶ Ö·/53≈f─ü◙╫╙ù├├Ñ╦º]£~â┌╣▒P

#2 Re : Programmation » Casser un chiffre de César avec Fortran » 09-02-2024 21:53:05

DrStone a écrit :

Ça reste une solution viable mais gourmande en ressource. À ce niveau-là, il vaut peut-être mieux tester les 25 possibilités. En revanche, je reconnais que c'est très formateur comme façon de faire !

En effet, on peut faire très court
18 lignes en Fortran

PROGRAM Cesar
IMPLICIT NONE
integer m,n
character(:),allocatable :: chaine
character(len=1000) :: crypto
write(*,*)'Déchiffrage du chiffre de César : entrez votre crypto EN MAJUSCULES et SANS ESPACES(limité à 1000 caractères)'
read(*,*)crypto
chaine=trim(crypto)
do m=1,26   
do n=1,len(chaine)
if(ichar(chaine(n:n))>=90) then
chaine(n:n) = achar(64)
endif
chaine(n:n)=achar(ichar(chaine(n:n))+1)
enddo
write(*,*)m,'    ',chaine
enddo
end program Cesar


6 seulement en Python !
cryptogramme=input("Déchiffrage du chiffre de César : entrez votre crypto EN MAJUSCULES et SANS ESPACES(limité à 1000 caractères) : ")
for n in range(1, 26):
    clair = ''   
    for c in cryptogramme:
        clair += chr((ord(c)-ord('A')+ n)%26 +ord('A'))
    print(n,' ',clair)

Je ne sais pas si on peut faire plus court !

#3 Re : Programmation » Casser un chiffre de César avec Fortran » 06-02-2024 20:28:57

DrStone a écrit :

Rebonjour gielev.

Et oui c'est amusant des faire tourner des trucs obsolètes pour le fun !

Bien sûr ! Il y a même pas un ou deux ans, j'ai codé une version d'ENIGMA en assembleur (chiffrement et déchiffrement). C'était inutile, long et compliqué ; mais qu'est-ce que c'était fun ! Si c'était à refaire, je le referais sans hésiter. Néanmoins, je ne suis pas pour autant parti sur une méthode qui me complique la vie pour peu de bénéfice comme cela semble être le cas dans ton POC. Et que ça soit ou non du Fortran n'y change rien. ;)


Là je dis Chapeau !
Et si tu aimes bidouiller de l'Enigma voici un challenge qui pourrait t'intéresser.
Les 9 premiers messages sont plutôt faciles. Le dernier c'est du costaud !
https://www.ciphermachinesandcryptology … llenge.htm

#4 Re : Programmation » Casser un chiffre de César avec Fortran » 06-02-2024 14:51:59

bonjour,

Un sujet du Monde d'aujourd'hui (rajouter http://www. devant les liens et .html derrière)
http://www.lemonde.fr/sciences/article/ … 50684.html

Quelques infos générales sur la "bête"
http://www.idris.fr/eng/jean-zay/jean-z … n-eng.html

Et là des infos techniques
http://www.idris.fr/eng/jean-zay/cpu/je … w-eng.html

Tout en bas de la page on lit :
Basic Software description
Compilers
    PGI compilers pgfortran and pgcc

Et pour répondre aux 2 messages précédents, encore une fois, comme l'a compris Ernst il s'agit d'un exercice de style. d'une proof of concept comme disent les anglo-saxons.
Fortran n'est de toute façon pas dédié aux manipulations de chaines de caractères.
Si on peut trouver une fonction shuffle dans ses bibliothèques, elle n'est implémentée que pour des nombres, tableaux de nombres etc... mais pas des lettres.(il faudrait passer par des nombres, leur rang dans l'alphabet pour les manipuler)

Et oui c'est amusant des faire tourner des trucs obsolètes pour le fun !

Et c'est très sympa d'avoir des retours par des personnes que le sujet interpelle :)
A cette époque désormais lointaine, on ne communiquait pas par Internet comme ici , mais directement par courrier avec les rédacteurs de journaux traitant d'informatique et avec d'autres lecteurs... et on utilisait beaucoup de bouquins, mais on bidouillait dur.
J'avais ainsi appris à formater une 41ème piste sur une disquette 5"1/4, à y inscrire quelque chose que je pouvais appeler par mes programmes... excellent moyen à (l'époque) de protection contre la copie.

#5 Re : Programmation » Casser un chiffre de César avec Fortran » 06-02-2024 10:14:46

@DrStone
Bien évidemment qu'on peut essayer comme ça. D'ailleurs cette méthode est parfois utile pour le chiffre de Vigenère quand on recherche les décalages de chaque alphabet utilisé dans la clé.
Mais attention avec le fameux texte de Perec ne contenant aucun "e" ça peut s'avérer plus délicat.
Moi j'ai juste fait de la force brute avec un calcul de score pour faire le tri dans les solutions possibles.
Je rappelle qu'ici l'idée était simplement de le faire avec un langage de programmation "ancien" et parfois dénigré alors qu'encore très utilisé dans certains domaines d'applications très précis (par exemple les programmes de tests des supercalculateurs)

#7 Programmation » Casser un chiffre de César avec Fortran » 02-02-2024 18:17:26

gielev
Réponses : 14

bonjour,
Je mets ce sujet ici car c'est plutôt de la programmation que de la cryptographie...
Et c'est un peu pour le fun que je publie ceci !

il y a de cela quelques semaines, il a été question d'une panne de la sonde Voyager 1.Dans un article qui en parlait on disait que la NASA recherchait des ingénieurs capables de programmer un correctif pour tenter de la réparer, ce qui a été fait et avec succès.
Le problème était que les programmes de fonctionnement de la sonde nécessiataient d'être écrits en Fortran, et forcément dans une ancienne version du langage datant d'il y a au moins 46 ans...
Il y a 46 ans j'étais étudiant et je commettais mes tout premiers programmes informatiques et ils étaient écrits en Fortran IV aka Fortran 66.
Certaines structures de langage ne sont apparues que par la suite dans Fortran 77 telles IF ... THEN.
A l'époque on écrivait IF (Condition) x,y,z où x,y et z étaient des labels numériques qui renvoyaient vers des blocs de programmes.

Un collègue facétieux me proposait même de bricoler un lecteur de cartes perforées avec un Arduino ! :)))))
Je n'ai pas conservé les cartes perforées ! :))).

Je me suis dit alors qu'on doit pouvoir écrire des programmes de déchiffrage de cryptos...
Il est vrai qu'à la base Fortran n'est pas dédié à la manipulation de texte.
J'ai donc décidé de faire simple avec un César, histoire de faire une "proof of concept".
Certains outils de Python n'existant pas en Fortran ça demande un peu de temps pour les adapter.
J'ai repris les idées de Rossignol sur sa page dédiée à cela, avec les calculs de score.
J'ai cependant modifié le fichier des tétragrammes que j'avais pour faire de la brute-force, en ne gardant que la colonne des tétragrammes à laquelle j'ai adjointe une colonne avec le log(fréquences)
J'ai aussi raccourci le fichier des tétragrammes en enlevant les peu fréquents pour que la recherche des tétragrammes et le calcul du logscore soit plus rapide.
J'utilise gfortran avec Geany sous Linux, on peut donc lancer le programme en ligne de commande dans un terminal par ./nom de fichier (sans extension).
C'est plutôt performant !
Contrairement à ce qu'on pense Fortran est encore utilisé (Nombreuses sources sur la Toile).

A tester avec peut-être ceci :
JFLMVEKGFLIJRDLJVICVJYFDDVJUVHLZGRXVGIVEEVEKUVJRCSRKIFJMRJKVJFZJVRLOUVJDVIJHLZJLZMVEKZEUFCVEKJTFDGRXEFEJUVMFPRXVCVERMZIVXCZJJREKJLICVJXFLWWIVJRDVIJRGVZEVCVJFEKZCJUVGFJVJJLICVJGCRETYVJHLVTVJIFZJUVCRQLIDRCRUIFZKJVKYFEKVLOCRZJJVEKGZKVLJVDVEKCVLIJXIREUVJRZCVJSCRETYVJTFDDVUVJRMZIFEJKIRZEVIRTFKVUVLOTVMFPRXVLIRZCVTFDDVZCVJKXRLTYVVKMVLCVCLZERXLVIVJZSVRLHLZCVJKTFDZHLVVKCRZUCLERXRTVJFESVTRMVTLESILCVXLVLCVCRLKIVDZDVVESFZKREKCZEWZIDVHLZMFCRZKCVGFVKVVJKJVDSCRSCVRLGIZETVUVJELVVJHLZYREKVCRKVDGVKVVKJVIZKUVCRITYVIVOZCVJLICVJFCRLDZCZVLUVJYLVVJJVJRZCVJUVXVREKCVDGVTYVEKUVDRITYVITYRICVJSRLUVCRZIV

Le code suit . Il peut paraître rudimentaire, 51 lignes m'ont suffi,  mais je suis resté volontairement proche de Fortran IV n'étant pas resté à jour sur l'évolution du langage ! Je suis passé par la suite à des choses plus "conviviales" :)

PROGRAM Cesar
IMPLICIT NONE
character(len=4) :: tetra_lu,tetra
integer n_ligne,comp,l,m,n
real k,logscore,meilleurscore
character(:),allocatable :: chaine,clair
character(len=1000) :: crypto
l=0
logscore=0
meilleurscore=1e10
write(*,*)'Programme de déchiffrage du chiffre de César'
write(*,*)''
write(*,*)'Entrez votre crypto EN MAJUSCULES et SANS ESPACES(limité à 1000 caractères)'
read(*,*)crypto
chaine=trim(crypto)
clair=''
! exemple de chaine pour test
! chaine = 'JLJPLZABULZZHPKLWYVNYHTTLKLKLJOPMMYHNLKBJOPMMYLKLJLZHY'
write(*,*)''
do m=1,26   
logscore=0
do n=1,len(chaine)
if(ichar(chaine(n:n))>=90) then
chaine(n:n) = achar(64)
endif
chaine(n:n)=achar(ichar(chaine(n:n))+1)
end do
!write(*,*)m,'    ',chaine
l=0 
!do comp=1,len(chaine)-3  ! recherche des tétragrammes
do comp=1,4 ! variante rapide
Tetra=chaine(comp:comp+4)
open(unit=20, file='FreqTetrag3.txt',form='formatted')
n_ligne = 0
do while (.true.)   
read(unit=20,fmt=*,iostat=n_ligne) tetra_lu,k
if (n_ligne .ne. 0) exit
if (tetra_lu .EQ. Tetra) l = l+1
if (tetra_lu .EQ. Tetra) logscore = logscore + k
if (tetra_lu .EQ. Tetra) exit
enddo
close(20)
enddo
logscore=logscore + (len(chaine)-3-l)*100 
if (logscore < meilleurscore) clair = chaine
if (logscore < meilleurscore) meilleurscore = logscore
if (tetra_lu .EQ. Tetra) write(*,*)'décalage =',26-m,'    ',chaine
enddo
write(*,*)''
write(*,*) 'Possible clair : ', clair
end program Cesar

Le fichier des téragrammes peut être trouvé ici : (merci à Rossignol)
https://bribes.org/crypto/brut4g_fr.txt
Personnellement j'ai éliminé tous ceux qui ont une occurence inférieure à 200.
Et j'ai remplacé la colonne des occurences par une colonne de fréquences.
J'ai ensuite renommé le fichier en FreqTetrag3.txt. J'ai utilisé des versions différentes lors de mes essais d'où le 3.

#8 Re : Cryptographie » Sans voyelle » 15-09-2023 20:55:26

En effet le message d'A9-G7 est amusant.
Bien que le numéro soir prétendument non surtaxé je ne l'ai toutefois pas appelé ;)

#9 Re : Cryptographie » Sans voyelle » 12-09-2023 16:46:04

U, ,ou, ,u'i, ,ai,ai, ,ui, ,e ,o,,ai, é,ei,,é,
,ou, ,e,ou, ,a,, ,o, ,i, ,a,, a,oi, ,o,,ei,,é
,e, yeu, ,e,,é, ,e ,i, ,e ,o,,e,,e e, ,i,e,,e
,a, ,e, é,,ai,, o,,,u,, a,,o,,e, ,a ,,é,e,,e
,ou, ,'e,,ui, ,u, ,e ,ou,e e, ,e ,ue, ,,a,a,
,e ,i, ,oi, e, ,o,,a,, ,ue ,e ,e ,o,,ai, ,a,

Il y a des erreurs dans le cryptogramme.

#10 Re : Cryptographie » Un cryptogramme d'Arthur Hermann » 02-06-2023 20:57:33

Jericho a écrit :

Impressionnant !

Il trouve la solution d'une de mes créations en 1,5 secondes sans même avoir besoin du mot probable lorsqu'on choisit le bon nombre de colonnes... Cela aurait pu faire gagner du temps à gielev ;-)

Et comment ! :))

#11 Cryptographie » Carré de 25 à 16 représentations et Playfair » 23-05-2023 19:55:43

gielev
Réponses : 2

bonjour,
ceci est un message d'information à propos d'un truc que nous avons fortuitement découvert Cogite (connu ici) et moi.
En effet, alors que je lui donnais un petit coup de main sur une série de cryptos, l'un d'eux lui a donné du fil à retordre.
Il l'a finalement résolu seul en m'annonçant que c'était un Playfair dont on ne garderait qu'un caractère sur 2 du clair obtenu.
Personnellement j'avais trouvé qu'il s'agissait d'un carré de 25 à 16 représentations.

Quelques essais sur d'autres cryptos  chiffrés en carrés de 25 à 16 représentations ont donné le même résultat : on pouvait les déchiffrer comme des Playfair (en gardant un caractère sur 2) ou des carrés de 25 à 16 représentations.
De plus les 2 méthodes utilisent la même clé.
On s'est alors demandés si ce résultat est général.
J'ai aussi soumis la question à Didier Müller qui a lui-même été intrigué par la chose.

Finalement je pense avoir trouvé la démonstration et la conclusion est que ce résultat est bien général.

Le point commun des 2 méthodes est l'utilisation d'un carré de Polybe, qui de plus est le même dans le cas présent.

Dans un carré de 25 à 16 représentations une lettre X en ligne i colonne j est chiffrée par 2 lettres.
Xij  donne Aik Bk'j avec k différent de j et k' différent de i. A et B ne se trouvent jamais sur un même ligne ou une même colonne.
A et B se trouvent donc au coins opposés d'un rectangle.
Dans un Playfair avec la même clé, donc la même grille Aik Bk'j se déchiffre en  XijYk'k 
Très logiquement on retrouve comme 1er caractère le caractère du clair initial.

Curieusement je n'ai jamais rien lu à ce propos mais cela mérite d'être noté car cela donne une 2ème méthode pour décrypter un carré de 25 à 16 représentations.

#12 Re : Cryptographie » Calcul de la distance d'unicité d'une méthode de chiffrement » 06-02-2023 18:09:09

Page 56 en 5 lettres à déchiffrer avec grille de Vigenère...
QCQWA
;)

#13 Re : Cryptographie » Enigme potentielle tirée d'un jeu » 01-02-2023 17:37:19

bonjour,
Il y a quelques entorses à l'alternance voyelle-consonne dans le texte.
Moi en voyant cela ça m'a fait penser à du latin (IC proche du français sans doute)
Petit extrait de la Guerre des Gaules de JC
Eo cum de improviso celeriusque omni opinione venisset, Remi, qui proximi Galliae ex Belgis sunt, ad eum legatos Iccium et Andocumborium, primos civitatis, miserunt, qui dicerent se suaque omnia in fidem atque in potestatem populi romani permittere, neque se cum Belgis reliquis consensisse neque contra populum romanum coniurasse, paratosque esse et obsides dare et imperata facere et oppidis recipere et frumento ceterisque rebus iuvare; reliquos omnes Belgas in armis esse, Germanosque qui cis Rhenum incolant sese cum his coniunxisse, tantumque esse eorum omnium furorem ut ne Suessiones quidem, fratres consanguineosque suos, qui eodem iure et isdem legibus utantur, unum imperium unumque magistratum cum ipsis habeant, deterrere potuerint quin cum his consentirent.
Et puis ça collerait avec le côté grimoire du texte...
Enfin je dis ça je dis rien, c'est juste une hypothèse...

#14 Re : Cryptographie » Aide pour chiffrage avec des nombres » 20-01-2023 21:33:36

Salut Yoshi,
Si tu remontes un peu ce fil tu verras que tu aurais déjà du intervenir de la sorte bien avant, car une bonne partie des posts n'ont depuis longtemps plus rien à voir avec le "chiffrage avec des nombres".
Quoi qu'il en soit je me demande si tu ne devrais pas verrouiller ce fil après avoir laissé à commcomm le temps de réouvrir un nouveau fil.
Quand tu supprimeras ensuite son message et le tien tu pourras également supprimer le mien.
gielev

#15 Re : Cryptographie » Aide pour chiffrage avec des nombres » 16-01-2023 12:09:07

@COGITE : de rien :)

J'en profite pour signaler que le Coyote a modifié l'image oxana.tif car il y avait un problème avec l'applet de déchiffrement du message caché. C'est dorénavant un fichier oxana.png.
Le clair du message caché est resté le même, mais pas le chiffré.

#16 Re : Cryptographie » Aide pour chiffrage avec des nombres » 20-11-2022 22:42:05

C'est pourtant simple.
Dans un des messages précédents on te dit quel jour commence le mois que tu as trouvé. Je n'en dis pas plus ici.
La date de ce jour est donc celle du premier jour.
Tu viens de trouver une date avec le jour i.
Le i ième jour de ce mois est donc la date que tu cherches.
Et ça colle parfaitement.

Bon courage pour la suite. Les 2 prochaines étapes ont la particularité que tu connais la méthode utilisée. La méthode de l'étape qui vient après est facile à deviner.
Par contre il y a d'autres "infos" qui même si tu peux les laisser de côté dans un premier temps te serviront par la suite.
Car cela devient ardu.
Il te suffit d'ailleurs pour cela de regarder le classement sur le site du Coyote pour voir le nombre de gens qui se sont arrêtés ou sont actuellement arrêtés (je ne sais pas) en ayant réussi l'étape 18.

#17 Re : Cryptographie » Aide pour chiffrage avec des nombres » 19-11-2022 21:52:40

Quant à moi, une fois compris la signification de, et donc déchiffré, plusieurs trigrammes (j'en avais 5) j'ai fait des essais en en prenant 3 d'entre eux jusqu'à ce que ma matrice soit inversible...

#19 Re : Cryptographie » Aide pour chiffrage avec des nombres » 15-11-2022 10:39:29

Pas mal. Tu progresses bien. Observe bien les trigrammes du texte et relis mon message précédent. Quelque chose devrait te sauter aux yeux.

#20 Re : Cryptographie » Aide pour chiffrage avec des nombres » 14-11-2022 20:45:49

L'approche par les trigrammes est bonne.
Regarder la distance entre eux peut être utile dans le cas de l'un d'entre eux.
Fais ensuite l'inventaire de tout ce qu'on peut faire avec des trigrammes. Tu trouveras une méthode qui en utilise...

#21 Re : Cryptographie » Un cryptogramme d'Arthur Hermann » 09-09-2022 11:01:52

Enfin terminé après pas mal d'heures de recherches et le soutien de Rossignol et des échanges avec Jericho. Je les remercie tous deux, même si Jericho m'a détourné à un moment de ce qui était une bonne piste!!! Jericho est encore dedans. Courage ! Avec ce que je t'ai indiqué tu vas trouver.
Le mot officier s'écrivant avec 8 caractères donc 16 chiffres écrits sur 15 colonnes est bien une faiblesse (le regretté Nerosson s'en serait délecté, lui qui m'a appris à attaquer des cryptos sous cet angle).
On peut l'exploiter avec crayon et papier.
Mais il faut beaucoup de rigueur pour ne rien laisser passer.
Yoshi ça ne te tente pas ?
Bonne journée à tous

#22 Re : Cryptographie » Un cryptogramme d'Arthur Hermann » 31-08-2022 11:55:02

Oui l'information de Rossignol est précieuse.
Avec le mot probable (ici certain) OFFICIER cela fait 2 infos exploitables.
Ecrire le crypto sur 15 colonnes est astucieux aussi car cela complique un peu les choses.
Mais il y a peut-être un excès de prétention de la part de Hermann... nous donner un mot de 8 lettres qui nécessitent 16 colonnes alors que le tableau n'en a que 15 est une faille que j'essaie d'exploiter. Pour donner une indication il n'y a que 8 colonnes sur 15 qui permettent d'avoir le O de OFFICIER. Et parmi celles-ci on peut en éliminer de façon quasi immédiate.
Exemple la colonne 4. Pour qu'elle puisse convenir il faudrait qu'on puisse avoir 18 en ligne 3 or il n'y a pas de 1 en ligne 3...
Et il y a d'autres raisons permettant d'éliminer des cas parmi les 13 possibles au départ.
On tombe rapidement à un petit nombre que je n'ai pas encore fini d'explorer.

#23 Re : Cryptographie » Un cryptogramme d'Arthur Hermann » 26-08-2022 21:33:09

bonjour,
sympa ce crypto...
(J'aime bien les cryptos dont on connait la méthode mais pas la clé !)
Ca me rappelle les transpos sur lesquelles nous faisait travailler Nérosson...(voir d'anciens fils de discussion)
Si on fait l'hypothèse que la table de substitution indiquée est celle utilisée le seul problème est donc de trouver la bonne permutation de colonnes.
Le fait que chaque caractère est constitué de 2 chiffres donne à penser qu'un traitement comme celui qu'on peut appliquer à un ADFGVX pourrait fonctionner ici.
Seul problème le temps de calcul. En effet si on a 12 colonnes (Hermann dit 10 à 12) cela nous fait 12! soit 479 001 600 combinaisons à tester...
Cela étant on peut essayer de ne pas passer par la force brute. Le souvenir des cryptos de Nérosson m'a donné l'idée de commencer à l'aide de la méthode crayon+papier, ici sa variante "égyptienne" (dite aussi des bandelettes :)))))) entre nous avec Nérosson !)
En effet Hermann nous indique la présence du mot OFFICIER dans le clair.
J'ai exploré sur la base de 12 colonnes, les appariements possibles pouvant donner des lettres F en repérant la ligne d'apparition du F.
Je n'en ai trouvé que 44.
Comme on a 2 F on peut alors essayer de regrouper 4 colonnes pour obtenir le digramme FF (à supposer que les 2 F soient sur la même ligne)
Dans les 44 combinaisons certaines ne peuvent se suivre.
exemple le couple de colonne 16 ne peut être associé au couple 82 car le F apparait dans des lignes différentes qui ne se suivent même pas!
De même 17 et 16 ne peuvent être associées car un numéro de colonne ne peut être utilisé 2 fois.
Cela réduit considérablement le champ de recherches.
A suivre quand j'en aurai le temps...

#24 Re : Cryptographie » Code » 01-08-2022 17:28:35

Ah ! la friperie ... :))) pourquoi ne pas aller leur poser la question ?

#25 Re : Cryptographie » Les cryptogrammes de Richard Feynman » 29-12-2021 17:16:48

Très intéressant.
Je connaissais Feynman de par mon métier, mais pas sous cet aspect, même si je sais qu'il pouvait être facétieux.
Dans le second crypto il y a une chose intéressante, 2 hexagrammes identiques qui se suivent.
C'est peut-être une faiblesse de la méthode employée.
Dans un des articles en lien il est dit que cela pourrait être une faute de transcription. Personnellement je n'y crois pas trop.
@+

Pied de page des forums