Forum Liberty Basic France

Débutant » Enigma chiffrer et déchiffrer 1 seul programme pour chiffrer et déchiffrer.
Le 18/10/2016 à 16h31

Libertynaute Débutant

Groupe: Membre

Inscrit le: 19/09/2013
Messages: 16
'Le programme est tout à fait symétrique. Si on enlève les 2 lignes du réflecteur (entre les 'instructions call), le codage de "bonjour" est . . ."bonjour".
Code VB :
 
' C'est le réflecteur qui introduit une' 'asymétrie ce qui permet le codage
'   CHIFFREMENT ET DECHIFFREMENT
'Inspirés par la machine Enigma
'Créé par Jacques Donner le 3/06/2015

a=13: b=7: c=19     'Position initiale des rotors
Rotor$(0) = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
Rotor$(1) = "EKMFLGDQVZNTOWYHXUSPAIBRCJ"
Rotor$(2) = "AJDKSIRUXBLHWTMCQGZNPYFVOE"
Rotor$(3) = "BDFHJLCPRTXVZNYEIWGAKMUSQO"
Rotor$(4) = "ESOVPZJAYQUIRHXLNFTGKDCMWB"   'Non utilisé
Rotor$(5) = "VZBRGITYUPSDNHLXAWMJQOFECK"   'Non utilisé
Reflect$ = "YRUHQSLDPXNGOKMIEBFZCWVJAT"
 
open "Systdata.bas" for input as #1
input #1,ttx$ 
close #1
 
input "Message à chiffrer ou déchiffrer ? ";tex$ 
if tex$= "" then tex$=ttx$ 
tex$ = upper$(tex$):cls
lt = len(tex$) :global t$,n
'
for p = 1 to lt
    n=1 : t$ = mid$(tex$,p,1)
    call enig 0,1,a 'entrée,sortie,code
    call enig 1,2,b
    call enig 2,3,c
    R=asc(t$)-64
    t$=mid$(Reflect$,R,1)
    call enig 3,2,c
    call enig 2,1,b
    call enig 1,0,a
    tt$=tt$+t$
    a=a+1     'compteur
    if a>26 then a=1 : b=b+1
    if b>26 then b=1 : c=c+1
    if c>26 then c=1
next p
 
print tex$ : print tt$;" ";lt
open "Systdata.bas" for output as #1
print #1,tt$
close #1
end
 
sub enig e,s,co  'entrée,sortie,code
    n=n+1 : if n>4 then co=0-co
    R=instr(Rotor$(e),t$,1) : R=R+co
    If R>26 then R=R-26
    If R<1 then R=R+26
    t$=mid$(Rotor$(s),R,1)
end sub
 
____________________
jacques845

Web    
Le 18/10/2016 à 22h15

Modérateur

Groupe: Modérateur

Inscrit le: 09/02/2015
Messages: 522
Bonjour Jacques,

Si tu pouvais mettre en pièce jointe le fichier "Systdata.bas" ou nous dire comment le créer, parce que là, le programme ne le trouve pas et génère une erreur.

A+
____________________
Just BASIC v2.0 :
  • utilisation courante avec GNU/Linux Mageia6 + Wine (Pas trouvé d'incohérences ou de bug de compilation à ce jour)
  • utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc

   
Le 19/10/2016 à 15h45

Libertynaute Débutant

Groupe: Membre

Inscrit le: 19/09/2013
Messages: 16
Christophe:
Bonjour Jacques,

Si tu pouvais mettre en pièce jointe le fichier "Systdata.bas" ou nous dire comment le créer, parce que là, le programme ne le trouve pas et génère une erreur.

A+

Systdata.bas, c'est un fichier à créer, vide au départ. une page blanche puis "enregistrer sous" > Syst data.bas. On peut s'en passer taper un texte sans espaces puis enter
____________________
jacques845

Web    
Le 19/10/2016 à 21h38

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2095
y a un os dans l'pâté, Si tu fais lire un fichier vide sans mettre un while EOF
ça renvoie l'erreur "past of end"
Il suffirait peut-être de créer le fichier avant de l'ouvrir
Avec un simple "open for output"
Et lire dans une boucle
while(eof#x)=0
.....
wend
____________________
Roro

   
Le 19/10/2016 à 22h19

Modérateur

Groupe: Modérateur

Inscrit le: 09/02/2015
Messages: 522
Roland, si on demande au programme de générer ce fichier Sysdata au lancement, il écrasera la version précédente, c'est gênant si on compte sur cette version précédente. Dans la ligne input "Message à chiffrer ou déchiffrer ? ";tex$ et les suivantes, le programme ira chercher le contenu de Sysdata si l'utilisateur entre une chaine vide.

Je verrai donc bien une modif pour tester l'existence de Sysdata au lancement du programme, et le créer avec une chaine test à l'intérieur s'il n'existe pas.

Jacques : au fait, pourquoi "Systdata.bas" ? On s'attendrait plutôt à trouver un .txt ou une extension de ton choix.



Edité par Christophe Le 20/10/2016 à 13h54
____________________
Just BASIC v2.0 :
  • utilisation courante avec GNU/Linux Mageia6 + Wine (Pas trouvé d'incohérences ou de bug de compilation à ce jour)
  • utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc

   
Le 20/10/2016 à 14h02

Libertynaute Débutant

Groupe: Membre

Inscrit le: 19/09/2013
Messages: 16
Sysdata qui vous chipote n'est qu'un accessoire d'entrée et de sortie, un intermédiaire si l'on veut mis pour passer facilement du non chiffré au chiffré ou inversement et transmettre ailleurs.
____________________
jacques845

Web    
Le 20/10/2016 à 20h56

Modérateur

Groupe: Modérateur

Inscrit le: 09/02/2015
Messages: 522
C'est surtout l'extension qui me chipote, le .bas identifie un programme.

Autrement, même si Sysdata n'est qu'un intermédiaire, à partir du moment où tu veux éventuellement "transmettre ailleurs" il est toujours bon de soigner sa gestion.
____________________
Just BASIC v2.0 :
  • utilisation courante avec GNU/Linux Mageia6 + Wine (Pas trouvé d'incohérences ou de bug de compilation à ce jour)
  • utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc

   
Le 22/10/2016 à 10h55

Libertynaute Débutant

Groupe: Membre

Inscrit le: 19/09/2013
Messages: 16
Si ce systdata vous dérange, vous pouvez le supprimer. Il n'a été mis lors de la mise au point que pour voir sans recopier le chiffré et le déchiffré.
____________________
jacques845

Web    
Le 22/10/2016 à 13h22

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2095
hey, il faut traiter les espaces et les rendre en espaces
Pourquoi des majuscules ?
____________________
Roro

   
Le 22/10/2016 à 23h11

Administrateur

Groupe: Administrateur

Inscrit le: 24/09/2010
Messages: 238
Roland:
hey, il faut traiter les espaces et les rendre en espaces
Pourquoi des majuscules ?


Non, les espaces étaient aussi codés avec Enigma et toutes les lettres étaient en majuscule :)
____________________

MSN Yahoo Web    
Le 23/10/2016 à 09h02

Modérateur

Groupe: Modérateur

Inscrit le: 09/02/2015
Messages: 522
T'inquiète pas, Jacques, ton Sysdata ne me gêne pas, c'est juste pour la curiosité de savoir le pourquoi du comment et comment on peut améliorer, si besoin.

Nephthys : yes I am a little bit nervous, I am waiting for Mr Mulder and Mrs Scully to talk about five little green men I saw this night in my garden : they were stealing apples and strawberries.

;)
____________________
Just BASIC v2.0 :
  • utilisation courante avec GNU/Linux Mageia6 + Wine (Pas trouvé d'incohérences ou de bug de compilation à ce jour)
  • utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc

   
Débutant » Enigma chiffrer et déchiffrer 1 seul programme pour chiffrer et déchiffrer.  

 |  |

1 Utilisateur en ligne : 0 Administrateur, 0 Modérateur, 0 Membre et 1 Visiteur
Utilisateur en ligne : Aucun membre connecté
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie