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).

Répondre

Veuillez composer votre message et l'envoyer
Nom (obligatoire)

E-mail (obligatoire)

Message (obligatoire)

Programme anti-spam : Afin de lutter contre le spam, nous vous demandons de bien vouloir répondre à la question suivante. Après inscription sur le site, vous n'aurez plus à répondre à ces questions.

Quel est le résultat de l'opération suivante (donner le résultat en chiffres)?
soixante quinze moins quarantedeux
Système anti-bot

Faites glisser le curseur de gauche à droite pour activer le bouton de confirmation.

Attention : Vous devez activer Javascript dans votre navigateur pour utiliser le système anti-bot.

Retour

Résumé de la discussion (messages les plus récents en premier)

python
03-09-2024 02:20:55

bonsoir

je voulais dire mercie pour le fichier que tu menvoie
sava me aide vraiment mercie beaucoup

DrStone
01-09-2024 23:34:15

Bonsoir Ernst.

En effet, ce n'est pas à la portée de tout le monde. Ce qui est tout de même triste dans cette affaire c'est qu'à une époque, pourtant pas si lointaine, tout ceci était accessible dans les grandes lignes à un élève de terminale.

En effet, l'Open Source est un mouvement d'une très grande importance en informatique (dans toutes ses branches) et pas uniquement qu'en cryptographie. Espérons que ce mouvement perdurera dans le temps ! Nos systèmes étant de plus en plus verrouillés et les entreprises toujours promptes à nous casser les noix afin de ne pas nous laisser posséder nos machines (comme HP qui cherche à faire des imprimantes à abonnements…)

Ernst
01-09-2024 22:20:40

Bonsoir,

DrStone a écrit :

Pour te donner une idée, voici vers quoi tu veux te lancer : https://www.math.univ-paris13.fr/~boyer … to2010.pdf. Et il s'agit seulement d'un cours pour "débutant".

Ah oui, c'est touffu. J'aime beaucoup le point 1.2 et 1.3 qui expliquent bien, je trouve, les développements actuels et surtout la nécessité de l'open source. Merci pour ce lien.

python
01-09-2024 21:51:31

bonsoire
Mercie beaucoup pour cette information sur la cryptographi je sais vraiment pa quoi te dire me tout simplement jetais dit mercie

DrStone
31-08-2024 22:22:19

Bonsoir.

Je ne sais pas quel âge tu as (même si je tablerais sur le fait que tu as moins de quinze ans…) mais si tu souhaites réellement faire de la cryptographie, il va te falloir faire trois choses.

  1. Travailler ton français (ou ta quelconque langue maternelle) ainsi que l'anglais : ce sera extrêmement important pour la suite.

  2. Faire des mathématiques à l'école… eh oui, la cryptographie (et l'informatique en général) c'est surtout beaucoup de mathématiques. Voir par exemple cette page wikipedia sur l'agorithme RSA qui, déjà, met beaucoup de la théorie sous le tapis.
    Quand je dis que tu devras faire des mathématiques à l'école, ce n'est pas juste au collège et au lycée (où tu devras prendre l'option mathématique) mais aussi dans le supérieur (à l'université, en classe préparatoires et/ou en école d'ingénieurs) car la cryptographie demande de faire des mathématiques "pour les grands".
    Pour te donner une idée, voici vers quoi tu veux te lancer : https://www.math.univ-paris13.fr/~boyer … to2010.pdf. Et il s'agit seulement d'un cours pour "débutant".

  3. Apprendre non pas seulement un langage de programmation comme Python (d'ailleurs on est pas "étudiant" dans un langage de programmation… ça ne veut rien dire cette histoire) mais l'informatique : les computer sciences. Car c'est bien de cela qu'il s'agit, d'une "science informatique". Il te faudra alors, encore une fois, prendre une option au lycée, l'option Numérique et Sciences Informatique (NSI) puis partir à l'université, en prépa et/ou en école d'ingénieur. Tu peux avoir une idée de ce que tu devras apprendre en informatique, ne serait-ce qu'au lycée, en allant voir ici pour la première et ici pour la terminale.

Mais bon, mon petit doigt me dit que rien de tout ceci ne t'intéresse vraiment et que tu souhaites juste avoir le bout de code qui va bien pour l'utiliser contre quelqu'un qui t'ennuie ou que sais-je encore.

python
31-08-2024 15:20:39

bonjour
te fort vraiment
moi suis seulement debitant

yoshi
29-08-2024 18:43:29

Bonsoir,

Je ne comprends pas ce que tu veux savoir.
Le n° 1 de quoi ? C'est quoi ? un fichier codé ?...

En revanche, vois-tu, ce que je peux te dire, c'est que ce fichier :
D:\exercices\.spyproject\config\backups\Lettres_crypto.je_un_homme_benie_sur_cette_terre, il est enregistré sur le disque D:\  de ton ordinateur et qu'en conséquence, personne (sauf un hacker, bien sûr), donc pas moi, peut rentrer sur ton ordi, lire fichier et donc pirater ta machine et y voler toutes tes données personnelles et le pirater...

Par contre à partir d'un fichier codé, je peux le découper en groupes de 5 lettres, comme c'est la tradition, à partir de Python.
Avec Python, ça se fait sans fatigue, il faut seulement que le texte soit une "chaîne de caractères" :
'PARCONTREJEPEUXDÉCOUPERUNTEXTEENGROUPESDE5LETTRESCOMMEONLEFAITHABITUELLEMENTAVECPYTHONOUTOUTAUTRELANGAGEDEPROGRAMMATION'
et on obtient

['PARCO', 'NTREJ', 'EPEUX', 'DÉCOU', 'PERUN', 'TEXTE', 'ENGRO', 'UPESD', 'E5LET', 'TRESC', 'OMMEO', 'NLEFA', 'ITHAB', 'ITUEL', 'LEMEN', 'TAVEC', 'PYTHO', 'NOUTO', 'UTAUT', 'RELAN', 'GAGED', 'EPROG', 'RAMMA', 'TION']

Ensuite je peux encore afficher le texte découpé en colonnes (par exemple en lignes de 10 colonnes).


from textwrap import wrap

message='PARCONTREJEPEUXDÉCOUPERUNTEXTEENGROUPESDE5LETTRESCOMMEONLEFAIT'
message+='HABITUELLEMENTAVECPYTHONOUTOUTAUTRELANGAGEDEPROGRAMMATION'

Decoupe=wrap(message,5)
l=len(Decoupe)
lign=l//10+1
for i in range(lign):
    print()
    if i<2:
        fin =10
    else:
        fin=l%10
    for j in range(fin):
        no=10*i+j
        print (Decoupe[no],end=" ")
 

Affichage :


PARCO NTREJ EPEUX DÉCOU PERUN TEXTE ENGRO UPESD E5LET TRESC
OMMEO NLEFA ITHAB ITUEL LEMEN TAVEC PYTHO NOUTO UTAUT RELAN
GAGED EPROG RAMMA TION

@+

[EDI]Le code que j'ai proposé ne me plaisait pas, je le trouvais "moche"...
J'y ai donc repensé dans mon lit, et j'ai trouvé mieux :


from textwrap import wrap

ms='PARCONTREJEPEUXDÉCOUPERUNTEXTEENGROUPESDE5LETTRESCOMMEONLEFAITHABITUELLEMENTAVECPYTHONOUTOUTAUTRELANGAGEDEPROGRAMMATION'

Decoupe=wrap(ms,5] # découpage en bloc de 5
# Ci dessous, grâce à enumerate() la boucle gère les blocs et l'index de chacun : pas besoin de connaitre le nb de blocs
for i,bloc in enumerate(Decoupe):
    if i%10==0 and i>0:  # si i est un multiple de 10 supérieur à 0
        print()                   # force le retour à la ligne
    print(bloc,end= " ")    #Affiche chaque bloc, à la suite du précédent et séparé par une espace

Le code me donne bien ce que j'attends :


PARCO NTREJ EPEUX DÉCOU PERUN TEXTE ENGRO UPESD E5LET TRESC
OMMEO NLEFA ITHAB ITUEL LEMEN TAVEC PYTHO NOUTO UTAUT RELAN
GAGED EPROG RAMMA TION
python
29-08-2024 15:56:03

toi alors tu es qui un programmeur sur quelle langage ou un cryptologue

moi je suis un etudient en langage python alors toi

python
29-08-2024 15:48:58

bonjour

sur le numerro 1. Crypto_grammes.py
voici ceque je trouve

******************************************************
        *    Découpe de Crypto selon longueur de ligne/clé   *
        *                         v. 1.1                     *
        ******************************************************

Quelle est la longueur de la ligne -ou de la clé- (maximum 36 ?) 36
Enregistrement du crypto lettre par lettre et des index de position

       Fichier enregistré : D:\exercices\.spyproject\config\backups\Lettres_crypto.je_un_homme_benie_sur_cette_terre

       ---------------------------------------------------
               *** IMPRESSIONS VIA UN TABLEUR ***

du fichier lettres_crypto.je_un_homme_benie_sur_cette_terre (orientation de la page en "Paysage") :
  * Marges H, B, G et D : 1 cm,
  * Police Arial 10 taille 10,
  * Supprimer En-Tête et Pied de Page (Avec OOo Calc décocher Activer),
  * Centrer les colonnes,
  * Par 3 lignes à la fois, mettre un quadrillage.

Pour quitter, presser la touche ENTREE


esque cetait ça la resolution ou pa

yoshi
27-08-2024 19:53:38

Bonsoir,

On ne peut pas dire que je suis "fort", ça m'a intéressé, c'est tout, surtout  la programmation...
Mais ici, il y a au moins 2 ou 3 personnes, qui, elles sont fortes...
Sur notre site, tu trouveras un très gros dossier sur la cryptographie du passé, mais aussi d'aujourd'hui :
https://www.bibmath.net/crypto/index.php

Ce sous-forum de Bibmath est un lieu d'échanges, de questions/réponses sur la cryptographie :
https://www.bibmath.net/forums/viewforum.php?id=6

Une dernière chose : plus un message est court, plus il est difficile à décoder...

@+

python
27-08-2024 18:09:15

ok alors pour la precision

te fort sur la cryptographie je vous lais juste connaitre moi aussi jaime beaucoup la cryptographie me moi je suis sur la programmation de
pyphon donc je suis a la formation

yoshi
22-08-2024 18:45:08

Bonsoir,

Non, c'est un logiciel de Programmation destiné à ceux qui veulent programmer, c'est à dire écrire une suite d'instructions permettant à l'ordinateur d'effectuer une tâche précise.

Cette tâche précise peut être une suite de calculs, ou même si tu en es capable, crypter (et décoder) les données présentes sur ta machine.
Mais ce dernier point n'est pas à la portée de tous...
Python, comme les autres langages de programmation (C, C++, Pascal, BASICs, etc...), ne fait rien tout seul : il attend les ordres !

@+

python
22-08-2024 17:55:01

bonjour
s'il vous plait je merai savoir esque c'est un logiciel qui crypte de donnee da l'ordinateur

yoshi
17-08-2009 11:51:41

Bonjour,

Pour plus de détails vous reporter à l'épinglé de même nom dans le sous-forum cryptographie...

Voici les lignes de code pour Python 2.5 ou 2.6.
1. Crypto_grammes.py

#!/usr/bin/env python
# -*- coding: CP1252 -*-

from time import time
from os import getcwd,remove
from operator import itemgetter

def ecriture_fichiers_intermediaires(xgr,lgx,nomf,fl):
    f2=open(nomf,"w")
    for i in xrange(lgx):  
        (a,b),(c,d)=xgr[i],xgr[i-1]
        if a[0]!=c[0]and i>0 and fl:
            f2.write(','+'\n')        
        f2.write(a+','+b+'\n')              
    f2.close()
    return

def prepare_tri(a,c,d,e,LL,vides,blang):
    if c == e:
        if c==a:
            ecart=abs(int(b)-int(d))
            Ecart.append(ecart)
            LL.append(c+','+d+','+str(ecart))
        else:
            LL.append(c+','+d+',')
        blang=0
    else:
        if c == a:
            ecart= abs(int(b)-int(d))
            Ecart.append(ecart)
            LL.append(c+','+d+','+str(ecart))
            LL.append(',,')
        else :
            if blang == 0:
                LL.append(',,')
        blang=1
    return LL,blang,Ecart
   
tp_d=time()
print "        ******************************************"
print "        *        Analyse des X_grammes           *"
print "        *              v. 2.1                    *"
print "        ******************************************"
print

rep = getcwd()
nom=rep+chr(92)+"fichier_crypto.txt"
fichier=open(nom,'r')
L=fichier.readlines()
fichier.close()
crypto=L[0].strip("\n")
crypto=crypto.replace(' ','')
crypto=crypto.upper()
lg_crypto=len(crypto)
qb_grm,q_grm,t_grm,b_grm,Ecart,Ecarts,Lq,Lt,Lb,Ll =[],[],[],[],[],[],[],[],[],[]
lg_q,lg_t,lg_b=0,0,0

print "1. Constitution des x-grammes et tri alphabétique"
lg4, lg3, lg2,lg1 = lg_crypto-3, lg_crypto-2,lg_crypto-1,lg_crypto
for i in xrange(lg2):
    if i<lg4:
        a,b = crypto[i:i+4],str(i+1)
        Lq.append(a)
        qb_grm.append((a,b))
        q_grm.append((a,b))
    if i <lg3:
        t_grm.append((crypto[i:i+3],str(i+1)))
        Lt.append(crypto[i:i+3])
    if i <lg2:
        b_grm.append((crypto[i:i+2],str(i+1)))
        Lb.append(crypto[i:i+2])
    Ll.append(crypto[i])
           
# Tris alpha    
q_grm.sort()
t_grm.sort()
b_grm.sort()

# Elimination doublons, triplons, dénombrement et tri par qtés décr
Lq=sorted([(x, Lq.count(x)) for x in set(Lq)])
Lq=sorted(Lq,key=itemgetter(1),reverse=True)
lg_q=len(Lq)

Lt=sorted([(x, Lt.count(x)) for x in set(Lt)])
Lt=sorted(Lt,key=itemgetter(1),reverse=True)
lg_t=len(Lt)

Lb=sorted([(x, Lb.count(x)) for x in set(Lb)])
Lb=sorted(Lb,key=itemgetter(1),reverse=True)
lg_b=len(Lb)
lg_m=max(lg_q,lg_t,lg_b)

Ll=sorted([(x, Ll.count(x)) for x in set(Ll)])
Ll=sorted(Ll,key=itemgetter(1),reverse=True)
lg_l=len(Ll)
         
# Enregistrements des x_grammes
# 1. Quadrigrammes
print "2. Enregistrements des quadrigrammes bruts et triés"
nombrut=rep+"\\qb_grm.txt"
nomtri=rep+"\\q_grm.txt"  # Nom des fichiers à ouvrir
ecriture_fichiers_intermediaires(qb_grm,lg4,nombrut,0)                
ecriture_fichiers_intermediaires(q_grm,lg4,nomtri,1)
print '       Fichier : '+nombrut                
print '       Fichier : '+nomtri
print

# 2. Trigrammes
print "3. Enregistrements des trigrammes triés"
nomtri=rep+"\\t_grm.txt"  # Nom du fichier à ouvrir
ecriture_fichiers_intermediaires(t_grm,lg3,nomtri,1)
print '       Fichier : '+nomtri
print

# 3. Bigrammes
print "4. Enregistrements des bigrammes triés"
nomtri=rep+"\\b_grm.txt"  # Nom du fichier à ouvrir
ecriture_fichiers_intermediaires(b_grm,lg2,nomtri,1)
print '       Fichier : '+nomtri
print

# Lettres seules
print '5- Enregistrement des lettres par nombre de présences décroissant'
fich_l=open(rep+'\\Bilan_lettres_seules.csv','w')
for i in xrange(lg_l):
    (a,b)=Ll[i]
    fich_l.write(a+',,'+str(b)+'\n')
fich_l.close()
print '    Nom du fichier : '+rep+'\\Bilan_lettres_seules.csv'

# Constitution du fichier global sans les lettres seules
print "\n6. Enregistrement des xgrammes et leurs index"
f4b=open(rep+"\\qb_grm.txt","r")  # Nom des fichiers à ouvrir
f4t=open(rep+"\\q_grm.txt","r")
f3t=open(rep+"\\t_grm.txt","r")
f2t=open(rep+"\\b_grm.txt","r")
L4b=f4b.readlines()
L4t=f4t.readlines()              
L3t=f3t.readlines()
L2t=f2t.readlines()
f_g=open(rep+"\\X_grammes.csv","w")
lg4t,lg3t,lg2t,raccord,vides=len(L4t),len(L3t),len(L2t),",,",","
lg_maxi=max(lg4t,lg3t,lg2t)
lign1=" ,,X_4,,,, X_3 ,,, X_2,"
lign2="Succ.,N°,,Triés,Index,,Triés,Index,,Triés,Index"  
for i in xrange(lg_maxi):
    if i<lg4:
        C4b=L4b[i].strip('\n')
    else:
        C4b=vides
    if i<lg4t:
        C4t=L4t[i].strip('\n')
    else:
        C4t=vides      
    if i<lg3t:
        C3t=L3t[i].strip('\n')
    else:
        C3t=vides    
    if i<lg2t:
        C2t=L2t[i]
    else:
        C2t=vides
       
    if i%59==0:
        f_g.write(lign1+"\n"+lign2+"\n")
    lign3=C4b+raccord+C4t+raccord+C3t+raccord+C2t
    f_g.write(lign3)
f_g.close()
f4b.close()
print '       Fichier ici : '+rep+'\\X_grammes.csv'

# Bilan condensé et écarts
f_b=open(rep+"\\Bilan_Xgrammes.csv","w")
ecrit,i,blanc4,blanc3,blanc2,bl,bilan=0,0,0,0,0,0,',,,,,,,,,,,BILAN,,,,,,,,,,,,'+"\n"
vides+=','
L4,L2,L3=[],[],[]
q_grm.append(('****','4'))
t_grm.append(('@@@','3'))
b_grm.append(('&&','2'))
for x in xrange(lg_maxi):
    if x <lg4:
        (a,b),(c,d),(e,f)=q_grm[x-1],q_grm[x],q_grm[x+1]
        LL,blanc4,Ecart=prepare_tri(a,c,d,e,[],',,',blanc4)
        L4+=LL            
    if x <lg3:
        (a,b),(c,d),(e,f)=t_grm[x-1],t_grm[x],t_grm[x+1]        
        LL,blanc3,Ecart=prepare_tri(a,c,d,e,[],',,',blanc3)
        L3+=LL
    if x <lg2:
        (a,b),(c,d),(e,f)=b_grm[x-1],b_grm[x],b_grm[x+1]
        LL,blanc2,Ecart=prepare_tri(a,c,d,e,[],',,',blanc2)
        L2+=LL      

debut=',,,,'                                                
l4,l3,l2,ligne_vide=len(L4),len(L3),len(L2),debut*2+vides
lg_maxi,blanc1,x=max(l4,l3,l2),0,0
Champs='4_grm,Index,Ecart,-*--*--*-*-,3_grm,Index,Ecart,-*-*-*-*-*-,2_grm,Index,Ecart\n'
bilan,vides= ',,,,,BILAN,,,,,\n',',,'

for i in range(lg_maxi):
    if x % 59 ==0 :
        f_b.write(bilan+Champs)
        x=0
    bl=0
    if i<l4:
        bl=(L4[i]==vides)
        ligne=L4[i]+',    ,'
    else:
        ligne=debut
        bl+=1
    if i<l3:
        bl+=(L3[i]==vides)
        ligne+=L3[i]+',,'
    else:
        ligne+=debut
        bl+=1
    if i<l2:
        ligne+=L2[i]
        bl+=(L2[i]==vides)
    else:
        ligne+=vides
        bl+=1          
    if bl==3:
        blanc1+=1
        if blanc1==1:
            f_b.write(ligne_vide+'\n')
            x+=1
    else:
        f_b.write(ligne+'\n')
        x+=1
        blanc1=0
f4b.close()
f4t.close()  
f3t.close()
f2t.close()
f_g.close()
print '       Fichier ici : '+rep+'\\Bilan_Xgrammes.csv'

fi_x=open(rep+'\\X_tri_decr.csv','w')
titres='4_grm, Qté,,3_grm, Qté,,2_grm, Qté\n'
for i in xrange(lg_m):
    if i%60==0:
        fi_x.write('\n'+titres)
    if i < lg_q:
        (a,b)=Lq[i]
        ligne=a+','+str(b)+',,'
    else:
        ligne=',,,'
    if i <lg_t:
        (a,b)=Lt[i]
        ligne+=a+','+str(b)+',,'
    else:
        ligne+=',,,'
    if i < lg_b:
        (a,b)=Lb[i]
        ligne+=a+','+str(b)+'\n'
    else:
        ligne+=',,\n'
    fi_x.write(ligne)
fi_x.close()
print '       Fichier ici : '+rep+'\\X_tri_decr.csv'

# Suppression des fichiers obsolètes
remove (rep+'\\qb_grm.txt')
remove (rep+'\\q_grm.txt')
remove (rep+'\\t_grm.txt')
remove (rep+'\\b_grm.txt')

                 
print '      ---------------------------------------------------'
print '               *** IMPRESSIONS VIA UN TABLEUR ***'

print ' Xgrammes.csv :'
print '    * Marges H et B : 1 cm'
print '    * Police Courrier New taille 10'
print "    * Ne pas utiliser d'En-Tête et de Pied de Page"
print
tp_f=time()
print '                Temps écoulé :',int(100*(tp_f-tp_d))/100.0,' s'
raw_input('         ... Pour Quitter, Pressez ENTREE ...')

Condition d'utilisation :
Le fichier à traiter doit impérativement :
- se nommer fichier_crypto.txt
- être prêt à l'emploi, sans chiffres, ni ponctuations, ni lettres accentuées
- avoir été tapé "au kilomètre", sans appui sur la touche ENTREE donc ; le plus sûr étant d'utiliser par exemple le Bloc-Notes,
- figurer dans le même dossier que Crypto_grammes.py.
Moyennant quoi, il vous suffira de lancer Crypto_grammes.py pour que le travail s'effectue (en moins d'une seconde).

2. Decoup_crypto.py
Pré-requis :
- L'existence dans le même dossier de fichier_crypto.txt,
- Si le texte a été codé via une clé, la longueur de ladite clé doit vous être connue.
Cet utilitaire ne vous demandera qu'une seule chose : la longueur souhaitée (en nombre de caractères) de la ligne ou de la clé.

#!/usr/bin/env python
# -*- coding:UTF-8 -*-

from os import getcwd,remove

print "        ******************************************************"
print u"        *    Découpe de Crypto selon longueur de ligne/clé   *"
print "        *                         v. 1.1                     *"
print "        ******************************************************"
print

rep = getcwd()
nom=rep+"\\fichier_crypto.txt"
fichier=open(nom,'r')
L=fichier.readlines()
fichier.close()

crypto=L[0].strip("\n")        # Suppression du caractère de retour à la ligne
crypto=crypto.replace(' ','')  # Suppression des espaces
crypto=crypto.upper()          # Passage du texte en majuscules
lg_crypto=len(crypto)          

# Définition des limites en mode paysage
if lg_crypto <100:
    limite=36
elif lg_crypto<1000:
    limite = 30
else:
    limite = 26

sortie,lg_cle=0,0
while not sortie:
    try:
        lg_cle=int(raw_input(u'Quelle est la longueur de la ligne -ou de la clé- (maximum '+str(limite)+' ?) ' ))
        if lg_cle <= limite and lg_cle >0:
            sortie=1
        else:
            print "Longueur hors limite d'impression, veuillez modifier votre choix, SVP !"
            print
    except ValueError:
        print u"Ce n'est pas un nombre valide, veuillez recommencer s'il vous plaît"
        print

# Paramétrage de l'enregistrement en vue de l'impression future
if limite%lg_cle==0:
    orientation='"Paysage"'
    lg=limite
    nb_blocs=1
    bas_page = 37
else:
    lg=lg_cle
    nb_blocs=limite/lg
    if lg>limite/2 and lg<21:
        bas_page=57
        orientation='"Portrait"'
    else:
        bas_page=37
        orientation='"Paysage"'

carac_par_ligne=nb_blocs*lg
blanc=(26-carac_par_ligne)/(nb_blocs-(nb_blocs>1))+1
reste=lg_crypto%carac_par_ligne
nb_lignes= lg_crypto/carac_par_ligne+(reste>0)
l,ligne_vide=-3,' ,'*(lg*nb_blocs-1)+'\n'
raccord='  ,'*blanc

# Découpe Crypto lettre par lettre
print "Enregistrement du crypto lettre par lettre et des index de position"
nom=rep+'\\lettres_crypto.csv'
fichier=open(nom,'w')
for ligne in xrange(nb_lignes):
    ligne1,ligne2='',''
    l+=4
    for no_bloc in xrange(nb_blocs):
        for col in xrange(lg):
            index=carac_par_ligne*ligne+lg*no_bloc+col
            if index>lg_crypto-1:
                ligne1+=','*(col<(lg_crypto-1))
                ligne2+=','*(col<(lg_crypto-1))
            else:
                ligne1+=str(index+1)
                ligne2+=crypto[index]
            if col<lg_cle-1:
                ligne1+=','
                ligne2+=','
            if col==lg-1 and no_bloc<(nb_blocs-1):
                ligne1+=raccord
                ligne2+=raccord
    fichier.write(ligne1+'\n'+ligne2+'\n'+ligne_vide*2)
    if l==bas_page:
        fichier.write(ligne_vide)
        l=-3
fichier.close()

print u'\n       Fichier enregistré : '+rep+'\\Lettres_crypto.csv'    

print '\n       ---------------------------------------------------'
print '               *** IMPRESSIONS VIA UN TABLEUR ***\n'

print 'du fichier lettres_crypto.csv (orientation de la page en '+orientation+') :'
print '  * Marges H, B, G et D : 1 cm,'
print '  * Police Arial 10 taille 10,'
print u'  * Supprimer En-Tête et Pied de Page (Avec OOo Calc décocher Activer),'
print '  * Centrer les colonnes,'
if lg <21 and bas_page==57:
    print '  * Forcer leur largeur à 0,9 cm,'
print u'  * Par 3 lignes à la fois, mettre un quadrillage.'
print
raw_input('Pour quitter, presser la touche ENTREE')

Commentaires, remarques, suggestions bienvenus.

@+

Pied de page des forums