Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| cryptage | |
| | Auteur | Message |
---|
philou029
Nombre de messages : 49 Age : 57 Localisation : BREST Date d'inscription : 17/10/2010
| Sujet: cryptage Sam 30 Mar 2013 - 8:36 | |
| bonjour je cherche a crypter une chaine de type cvs
ne connaissant pas trop en cryptage une petite aide me serai bien utile
toto ="nom;prénom;age;" | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: cryptage Sam 30 Mar 2013 - 9:45 | |
| | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: cryptage Sam 30 Mar 2013 - 10:00 | |
| Je te poste un exemple de cryptage. Tout est dans les commentaires. Exécute d'abord, UNE SEULE FOIS, le programme generer_table.bas: - Code:
-
' ************************************************************************** ' ***************** generer_table.bas ************************************** ' **************************************************************************
' ************ programme pour la création initiale de la table de conversion. ' Extraire ce code dans generer_table.bas et l'exécuter ! ' Ce programme est à exécuter UNE SEULE FOIS pour créer la table. ' Cette table sera ensuite utilisée par #INCLUDE dans le ' programme de conversion. Il faut TOUJOURS utiliser la même table !. dim table%(255), i%, n%, res% cursor_hourglass 0 for i%=0 to 255 table%(i%) = -1 next i% for i%=32 to 255 if i%>0 repeat nouveau() doublon(n%) until res%=0 else nouveau() end_if table%(i%) = n% next i% sauver() cursor_default 0 message "La table est créée." terminate end
sub sauver() dim_local s$ file_open_write 1,"crypter_include.bas" for i%=0 to 240 step 16 s$ = "data " for n%=0 to 15 s$ = s$ + str$(table%(i%+n%)) + "," next n% file_writeln 1,mid$(s$,1,len(s$)-1) next i% file_close 1 end_sub
sub doublon(n%) dim_local j% res% = 1 for j%=0 to i%-1 if table%(j%)=n% then exit_sub next j% res% = 0 end_sub
sub nouveau() repeat n% = int(rnd(256)) until n%<256 end_sub Un exemple du fichier créé: - Code:
-
data -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 data -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 data 253,170,174,209,49,115,50,167,223,171,169,117,191,61,138,232 data 152,14,173,72,58,254,38,196,160,137,52,145,133,237,100,215 data 4,54,74,189,244,86,151,155,93,16,172,156,238,64,105,246 data 142,104,148,195,249,40,51,73,53,202,216,227,153,0,161,176 data 62,13,224,78,245,147,11,96,89,12,194,239,201,255,121,27 data 113,103,168,158,204,26,85,205,112,101,76,63,198,91,7,68 data 187,242,17,67,241,120,143,150,87,107,135,47,9,84,102,208 data 92,234,8,141,77,139,118,200,69,206,214,29,175,199,43,60 data 123,222,192,203,166,41,21,42,94,2,210,32,116,193,56,39 data 48,220,229,157,122,236,248,81,106,15,233,213,247,108,79,90 data 231,99,28,132,154,75,127,55,226,211,218,162,243,184,37,136 data 219,181,82,114,110,190,59,111,36,70,240,146,185,88,179,186 data 35,207,5,71,20,251,95,10,188,1,221,83,180,217,197,140 data 18,119,80,66,134,126,34,65,165,144,30,44,33,6,97,128 Ce programme crée un fichier include utilisé par le programme crypter_une_chaine.bas: - Code:
-
' crypter_une_chaine.bas ' ' Ce code montre comment crypter une chaîne de caractères. ' ' L'idée, c'est de faire une table de substitution, et de ' remplacer tout caractère d'origine par un caractère de la table. ' C'est une méthode de cryptage très simple, peu sûre, mais qui ' rend le texte illisible par un simple affichage. On utilise une ' table créée par le programme generer_table.bas. Ce programme crée ' le fichier crypter_include.bas. On parle de cryptage de textes, ' donc on exclut volontairement les caractères d'une valeur ASCII ' inférieure à 32. ' ' Les chaines de caractères cryptées peuvent être écrites dans un ' fichier texte par FILE_WRITELN et relues par FILE_READLN.
label crypter, decrypter
dim table%(255), s1$, crypt$
charger_table()
width 0,800 alpha 1 : top 1,10 : left 1,10 : caption 1,"Texte d'origine:" edit 11 : top 11,10 : left 11,100 : width 11,600 alpha 2 : top 2,70 : left 2,10 : caption 2,"Texte crypté:" edit 12 : top 12,70 : left 12,100 : width 12,600 alpha 3 : top 3,130 : left 3,10 : caption 3,"Texte décodé:" edit 13 : top 13,130 : left 13,100 : width 13,600
button 21 : top 21,40 : left 21,100 : caption 21,"Crypter" : on_click 21,crypter button 22 : top 22,100 : left 22,100 : caption 22,"Décrypter" : on_click 22,decrypter
end
sub charger_table() dim_local i% for i%=0 to 255 read table%(i%) next i% end_sub
crypter: text 12,"" text 13,"" s1$ = text$(11) if len(s1$)=0 then return crypter(s1$) text 12,crypt$ return decrypter: text 13,"" s1$ = text$(12) if len(s1$)=0 then return decrypter(s1$) text 13,crypt$ return sub crypter(s$) dim_local n%, i% crypt$ = "" for i%=1 to len(s$) n% = asc(mid$(s$,i%,1)) crypt$ = crypt$ + chr$(table%(n%)) next i% end_sub
sub decrypter(s$) dim_local n%, i%, j% crypt$ = "" for i%=1 to len(s$) n% = asc(mid$(s$,i%,1)) for j%=32 to 255 if table%(j%)=n% crypt$ = crypt$ + chr$(j%) exit_for end_if next j% next i% end_sub
#INCLUDE "crypter_include.bas"
| |
| | | philou029
Nombre de messages : 49 Age : 57 Localisation : BREST Date d'inscription : 17/10/2010
| Sujet: Re: cryptage Dim 31 Mar 2013 - 7:16 | |
| j'avais penser plutôt a un système genre ou exclusif
mai ce système de table me conviens tout a fait
merci encore | |
| | | philou029
Nombre de messages : 49 Age : 57 Localisation : BREST Date d'inscription : 17/10/2010
| Sujet: Re: cryptage Dim 31 Mar 2013 - 9:15 | |
| | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: cryptage Dim 31 Mar 2013 - 17:44 | |
| Tu peux facilement faire un système avec OU exclusif. C'est beaucoup moins sûr. Dès l'instant qu'on connaît un des caractères d'origine du texte crypté, on peut obtenir la clé de cryptage par simple OU exclusif tu caractère crypté avec le caractère connu. Mais la boucle est facile à coder.
Attention: si tu utilises le système de codage par table, ne perds pas la table appliquée au codage des mots de passe, car il serait impossible de les récupérer. Une nouvelle génération de la table conduit forcément à une table différente, aléatoirement, et l'accès aux textes codés par la table précédente serait impossible. | |
| | | philou029
Nombre de messages : 49 Age : 57 Localisation : BREST Date d'inscription : 17/10/2010
| Sujet: Re: cryptage Dim 31 Mar 2013 - 21:06 | |
| en cherchant sur j'ai trouvé ce code de jl35
apparemment il utilise un FILEBIN_OPEN_READ 1, f1$: FILEBIN_OPEN_WRITE 2, f2$---------- pour récupérer une valeur binaire il y at'il moyen de convertir une valeur décimal en binaire sans passer par cette astuce
' Cryptage/décryptage d'un fichier texte ou binaire DIM mp$, i, j, v, vc, f$, fc$, fd$, f1$, f2$ LABEL Codbin
mp$ = "MotDePasse": ' Code de cryptage, plus c'est long, mieux c'est f$ = "C:\Textes\Lorem.txt": ' fichier à crypter fc$ = "Z:\Fcod" fd$ = "Z:\Fdec.txt"
PRINT "Codage..." f1$ = f$: f2$ = fc$: GOSUB Codbin PRINT "Décodage..." f1$ = fc$: f2$ = fd$: GOSUB Codbin PRINT "Terminé !" END
Codbin: ' cryptage/décryptage (symétrique) FILEBIN_OPEN_READ 1, f1$: FILEBIN_OPEN_WRITE 2, f2$ j = 1 FOR i = 1 TO FILEBIN_SIZE(1) FILEBIN_READ 1, v vc = BIN_XOR(v, ASC(MID$(mp$, j, 1))) FILEBIN_WRITE 2, vc j = j + 1: IF j > LEN(mp$) THEN j = 1 NEXT i FILEBIN_CLOSE 1: FILEBIN_CLOSE 2 RETURN Revenir en haut Aller en bas Voir le profil de l'utilisateur | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: cryptage Dim 31 Mar 2013 - 22:30 | |
| Ce n'est pas une astuce... simplement, le but est de crypter un fichier entier, ascii ou binaire, et de ranger le résultat dans un second fichier. Le codage se fait octet par octet, avec un mot de cryptage qui servira également pour le décodage. C'est facile d'adapter le principe à une chaîne de caractères par exemple, en convertissant chaque octet ascii en binaire: v = ASC(MID$(a$, x, 1)) donne la valeur binaire du caractère de rang x de la chaîne a$. En reprenant l'exemple ci-dessus: ... v = ASC(MID$(a$, x, 1)) vc = BIN_XOR(v, ASC(MID$(mp$, j, 1))) ... Edit: bon, je te donne un exemple complet de cryptage/décryptage. on veut crypter la chaîne a$ avec la clé de cryptage cle$ - Code:
-
LABEL Codec DIM a$, b$, cle$, i%, j%
a$ = "Au clair de la lune mon ami Pierrot": ' texte à crypter cle$ = "Azerty": ' clé de cryptage print "Origine: "+a$: GOSUB Codec: print "Cryptée: "+b$: ' cryptage de a$, résultat dans b$ a$ = b$: GOSUB Codec: print "Décryptée: "+b$: ' décryptage de b$, résultat dans b$ END
Codec: ' cryptage/décryptage (symétrique) de a$ dans b$, clé de cryptage cle$ b$ = "": j% = 1 FOR i% = 1 TO LEN(a$) b$ = b$ + CHR$(BIN_XOR(ASC(MID$(a$, i%, 1)),ASC(MID$(cle$, j%, 1)))) j% = j% + 1: IF j% > LEN(cle$) THEN j% = 1 NEXT i% RETURN Attention, comme le fait remarquer Klaus, c'est un cryptage simple qui ne résistera pas aux limiers de la CIA, mais ce n'est pas si facile que ça quand même, surtout si la clé est assez longue, et ça peut être utile. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: cryptage Lun 1 Avr 2013 - 0:18 | |
| S'il s'agit de crypter un fichier entier, qu'il soit texte, image ou n'importe quel binaire, il y a aussi la fonction "crypter" de KGF.dll. Le cryptage se fait via un double mot de passe. Chacun de ces mots de passe peut être très long - 10, 50, 3000 caractères etc. De préférence, utiliser des longueurs différentes pour les deux mots de passe. Ce cryptage est un peu plus "solide" que le simple OU exclusif. | |
| | | Invité Invité
| Sujet: Re: cryptage Lun 1 Avr 2013 - 0:25 | |
| Bonsoir, J'étais justement en train de reprendre un programme qui possédait un cryptage, pour le redonner à mon fils. Le programme original me sert tout les jours,et est bourré de fonctionnalité, J'ai donc repris que la partie cryptage, et certainement qu'il y a des restes du programme original. Si quelqu'un arrive à décrypter le fichier sans les codes, je lui tire mon chapeau. La première fois il faut créer les datas qui sont fait au hasard, on recopie les codes, et on le met à la fin du programme. Il faut ensuite modifier la ligne 13, qui est: IF 1=1, pour mettre : If 1 = 2, un code faux, car une fois créé, il ne faut surtout pas y toucher. Sinon, la récupération est impossible. (En tout cas je ne vois pas comment). Il y a 1000 datas de prévus, mais modifiable: melange(1000) et tri(1000). Plus il y en a, plus le démarrge est long. Mettre le bon dossier au départ. Cela fait plus d'un an que je code et décode, sans aucun problème, même si de temps en temps je fais une sauvegarde sur clé USB. De plus dans mon propre programme, j'ai le choix d'un fichier dans chaque ligne de différent combo. Ici, il n'y qu'un fichier de prévu. - Code:
-
left 0,200 label valide , branche , vide dim tri%(70000) , prov$ , f_n$ , save% , result$ , a$ , t$:t$=chr$(13) prov$="C:\temp\" :' chemin à adapter dir_change prov$ f_n$ = "" memo 1:full_space 1:top 1,30:height 0,height(0)+60 : bar_both 1 button 2:caption 2,"ouvrir":on_click 2,valide :inactive 2 ' **************************************************************************************** ' NE SERT QUE LA PREMIÈRE FOIS. ENSUITE: mettre: If 1 = 2 pour éviter les lignes entre. ' sert à fabliquer les lignes de data, à copier, et à mettre à la fin du programme. ' **************************************************************************************** if 1 = 1 :' ici mettre if 1 = 2 melange(1000) message "copier le contenu du memo, et le coller à la suite du programme" + t$ + "ensuite bloquer ces lignes avec 'if 1 = 2'" end end_if ' **************************************************************************************** ' FIN DE CETTE PARTIE DU PROGRAMME, QUI NE SERT QU'UNE FOIS ' ****************************************************************************************
' suite PROGRAMME NORMAL
tri(1000) : active 2
form 20 :left 20,screen_x/2-450 : width 20,900:height 20,250:border_small 20 :on_close 20,vide:caption 20,"double_clic: enregistre" memo 21 :parent 21,20 : full_space 21:font_size 21,10 :font_bold 21 : hide 20 :font_name 21,"Courier New" BAR_BOTH 21 : on_double_click 21,branche END ' ----------------------------------- valide: f_n$ = prov$ + "sauve.txt" show 20 : if file_exists(f_n$) = 1 then decode(f_n$) return ' ------------------
sub tri(nb%) dim_local a%,b%,b$,i% ,c% : restore for a%=1 to nb% read b% : for c%=0 to 66 : tri%( a% + nb%*c% ) = b% : next c% next a%: i%=1 : restore rem on limite à la longueur de a$
for a%=1 to nb%*66 :' nb de data repeat read b% : if b% <=len(a$) then tri%(i%)=b% : i%=i%+1 :' i% jusqu''à len(a$) until i%=a% or scancode =0 if i% > len(a$) then exit_for next a% end_sub ' --------------' vide: clear 21 wait 500:hide 20 return ' ============================================================================== branche: if number_double_click = 21 then save() return
sub save() encode() font_color 21,255,0,0
dim_local a%,d$ ,c%,c$ ,b$ : d$="" :b$="" if count(21) > 0 file_save 21,prov$+"sauve.txt" file_open_read 1,prov$ + "sauve.txt" while file_eof(1) <> 1 file_readln 1,c$ d$ = d$ + c$ + "®" end_while file_close 1 file_delete prov$+"sauve.txt" c$ = left$(d$,len(d$)-1 ) :' on retire le dernier return file_open_write 21,f_n$ : file_writeln 21,c$ : file_close 21 :' provisoire pour controle' for a%=1 to len(c$) c%=asc(mid$(c$,a%,1)) : if c%=9 then c%=32 if even(tri%(a%))=1 b$=b$ + chr$(c%+1) else b$=b$ + chr$(c%-1) end_if next a% file_open_write 21,f_n$ : file_writeln 21,b$ : file_close 21 end_if
font_color 21,0,0,0 :clear 21 : hide 20 end_sub
' ----------------------------------- sub decode(c$) dim_local c%,a$ ,d$,d%,a%,b$ :b$="" if file_exists(f_n$) = 1 file_open_read 1,f_n$ file_read 1,d$ file_close 1 end_if b$="" for a% =1 to len(d$) c%= asc(mid$(d$,a%,1)) if even(tri%(a%))=1 c%=c%-1 else c%=c%+1 end_if b$=b$+chr$(c%) next a% clear 21 repeat c%=instr(b$, "®" ) if c% >0 then a$=left$(b$,c%-1):item_add 21,a$:b$=mid$(b$,c%+1,len(b$)) until c%=0 or scancode =27 item_add 21,b$ end_sub
' --------------' NE SERT QU'UNE FOIS '--------------- ' @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@' sub melange(nb%) dim_local a% , b% ,a$ ,b$ ,c% a$=" ": b$="Data "
for a%=1 to nb% caption 0,str$(a%)+" - "+str$( count(1)) repeat b%=rnd(nb%-1) +1 +(nb%*c%) if instr(a$," "+str$(b%)+" ") = 0 then tri%(a%)=b%:a$=a$+str$(b%)+" " : b%=-1 until b%=-1 or scancode = 27 b$=b$+str$(tri%(a%)) if len(b$)< 145 b$=b$+"," else item_add 1,b$ :b$="Data " end_if if scancode = 27 then exit_for next a% if len(b$) > 5 then item_add 1,left$(b$,len(b$)-1) item_add 1,"' ----------------------------------------"
end_sub ' -------------------------------------------- ' @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@'
sub encode() dim_local b$,a%,c%,d$ :b$="" :d$="" if count(21) > 0 for a%=1 to count(21) d$= d$ + item_read$(21,a%) : if a% < count(21) then d$=d$ +"¤" next a% for a%=1 to len(d$) c%=asc(mid$(d$,a%,1)) if even(tri%(a%))=1 b$=b$ + chr$(c%+1) else b$=b$ + chr$(c%-1) end_if next a% result$=b$ file_open_write 21,f_$ : file_writeln 21,b$ : file_close 21 end_if end_sub
' ==========================================
Mince, j'ai pas vu ton message Klaus, au vu de ta réponse, la mienne est inutile.
Dernière édition par cosmos70 le Lun 1 Avr 2013 - 0:53, édité 1 fois |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: cryptage Lun 1 Avr 2013 - 0:34 | |
| Mais non, Cosmos70, ta réponse est loin d'être inutile. Ton code est entièrement en Panoramic, alors que ma suggestion concerne une fonction dans KGF.dll. Donc, ta solution est largement préférable pour ceux qui ne souhaitent pas utiliser des DLLs. | |
| | | philou029
Nombre de messages : 49 Age : 57 Localisation : BREST Date d'inscription : 17/10/2010
| Sujet: Re: cryptage Lun 1 Avr 2013 - 9:39 | |
| merci bien de toute ses explications ça va m’éviter de longues heures de recherches sur le cryptage je pense qu’avec une clef de 10 caractères un bon moment pour trouver la clef | |
| | | Contenu sponsorisé
| Sujet: Re: cryptage | |
| |
| | | | cryptage | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |