Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1394 connectés 

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Suivante
Auteur Sujet :

[VBA] Algoritme de cryptage

n°446529
Yoyo@
Posté le 02-07-2003 à 16:54:50  profilanswer
 

Reprise du message précédent :
Je pense que le RC4 est implémentable facilement en VB, j'ai trouvé les algo sur plusieurs liens... En fait, les seules opérations binaires qui ne semblent pas dispos sous VB sont les décalages de bits, mais pour le reste, on a plus ou moins tout !

mood
Publicité
Posté le 02-07-2003 à 16:54:50  profilanswer
 

n°1245544
darkangel
C2FFA
Posté le 14-11-2005 à 19:52:57  profilanswer
 

Remigio a écrit :

Private Function Crypter(cle As String, chaine As String) As String
Dim j, k As Integer
Dim tmp, code As String
 
code = ""
k = 1
 
For j = 1 To Len(chaine)
    tmp = Asc(Mid(chaine, j, 1)) Xor Asc(Mid(cle, k, 1))
    If tmp > 255 Then tmp = tmp - 255
    If tmp < 0 Then tmp = 255 + tmp
    k = k + 1
    If k > Len(cle) Then k = 1
    If tmp = 0 Then
        code = code + Mid(chaine, j, 1)
    Else
        code = code + Chr(tmp)
    End If
Next j
 
Crypter = code
 
 
 
End Function


 
 
Gros up :o
 
Yapa la même chose en décryptage :D

n°1245612
darkangel
C2FFA
Posté le 14-11-2005 à 21:14:17  profilanswer
 

En fait, sur le mien, j'ai de gros problèmes avec les caractères non imprimables. Ca me fou le texte décrypté en l'air des que ca tombe sur un retour chariot (ascii13) ou un fin de texte (ascii3) notemment

n°1245618
darkangel
C2FFA
Posté le 14-11-2005 à 21:16:57  profilanswer
 

Puis ceci :
 
    If tmp = 0 Then
        code = code + Mid(chaine, j, 1)
    Else
        code = code + Chr(tmp)
    End If  
 
 
cela doit être bien hard à gerer pour le décryptage non?!

n°1245623
Remigio
Radio Flip, 72.8
Posté le 14-11-2005 à 21:19:04  profilanswer
 

jme rappelle plus de ce code mais on dirait que je faisais une addition des caracteres ASCII par rapport a la clé... il suffit de faire une soustraction.
 
le mieux serait de faire un modulo, ca passe dans les deux sens

n°1245636
darkangel
C2FFA
Posté le 14-11-2005 à 21:34:57  profilanswer
 

Oui, le principe c'est ça :) le problème, c'est lorsqu'au cryptage on tombe sur certains caractères (de ce que j'ai pu constater, le retour chariot et le fin de ligne notemment) et bien leur "signification" est interprétée, si bien que ce la fait n'importe quoi si on a le malheur de tobmer dessus :(
 
Une solution serait de faire le cryptage que sur les caractères entre 32et255 (moins éventuellement le 127 qui risque de poser problème aussi :o ), mais alors je n'arrive plus decrypter :D
 
[:ludo2604]

n°1245640
darkangel
C2FFA
Posté le 14-11-2005 à 21:38:50  profilanswer
 

Donc voiçi ce que j'ai fait:
Pour le cryptage:

Code :
  1. For lCompteur = 1 To lLongueur
  2.             Temp = ((Asc(Mid(msg, lCompteur, 1)) + _
  3.                     (Asc(Mid(CLEF, (lCompteur Mod Len(CLEF)) + 1, 1)) * lLongueur)) Mod 223)
  4.             Mid(sLettres, lCompteur, 1) = Asci(Temp)
  5.         Next


 
Décryptage:

Code :
  1. For lCompteur = 1 To lLongueur
  2.             Temp = (Asc(Mid(msg, lCompteur, 1)) - 32 - _
  3.                  (Asc(Mid(CLEF, (lCompteur Mod Len(CLEF)) + 1, 1)) * lLongueur)) Mod 223
  4.                 If Temp < 0 Then
  5.                             Mid(sLettres, lCompteur, 1) = Chr(223 + Temp)
  6.                 Else
  7.                             Mid(sLettres, lCompteur, 1) = Chr(Temp)
  8.                 End If

n°1245641
darkangel
C2FFA
Posté le 14-11-2005 à 21:41:10  profilanswer
 

ah asci, c'est un tableau que j'ai fait au début qui contient les caractères 32à255 numerotés de 1 à 223 respectivement.

n°1245647
Remigio
Radio Flip, 72.8
Posté le 14-11-2005 à 21:51:30  profilanswer
 

si ca peut t'aider, j'avais fait une fonctionne de cryptage sous mIRC
je me rappelle que certain caractères foutaient la merde
 
voici le code, faut l'adapter si ca peut t'aider.
 

Code :
  1. ;===Cryptage des données===
  2. alias cr {
  3.   var %i = 1 , %k = 1 , %tmp,  %chaine, %code
  4.   if (!%cle) { set %cle $$?"Entrez la clé privée" }
  5.   %chaine = $1-
  6.   while ( $len(%chaine) >=  %i ) {
  7.     %tmp = $calc( $asc($mid(%chaine , %i , 1 ))  + $asc($mid(%cle , %k , 1 )) +1 )
  8.     If ( %tmp > 255 ) { %tmp = %tmp - 255 }
  9.     If ( %tmp < 0 ) { %tmp = %tmp - 255 }
  10.     inc %k   
  11.     If ( %k > $len(%cle) ) { %k = 1 }
  12.     %code = %code $+ $chr(%tmp)
  13.     inc %i
  14.   }
  15.   %code = ¤ $+ %code
  16.   say %code
  17.   echo %echolorme  %chaine
  18. }
  19. ;===DeCryptage des données===
  20. alias dcr {
  21.   var %i = 1 , %k = 1 , %tmp,  %chaine, %code
  22.   %code = $mid($2-,2,$len($2-))
  23.   while ( $len(%code) >=  %i ) {
  24.     %tmp = $calc( $asc($mid(%code , %i , 1 ))  - $asc($mid(%cle , %k , 1 )) - 1 )
  25.     If ( %tmp > 255 ) { %tmp = %tmp - 255 }
  26.     If ( %tmp < 0 ) { %tmp = %tmp + 255 }
  27.     inc %k
  28.     If ( %k > $len(%cle) ) { %k = 1 }
  29.     If ( %tmp == 32 ) { %tmp = 0160 }
  30.     %chaine = %chaine $+ $chr(%tmp)
  31.     inc %i
  32.   }
  33.   echo $1  %echolor %chaine
  34. }
  35. ;===Détection du texte crypté et décryptage===
  36. Off *:TEXT:¤*:#:{
  37.   dcr # $1-
  38. }
  39. ;===Couleur de l'echo===
  40. alias echolor {
  41.   if ($1 == $null ) {
  42.     set %echolor  $+ $$?"Choisissez le numéro de la couleur de l'echo"
  43.   }
  44.   else {
  45.     set %echolor  $+ $1
  46.   }
  47.   if ($2 == $null ) {
  48.     set %echolorme  $+ $$?"Choisissez le numéro de la couleur de votre echo"
  49.   }
  50.   else {
  51.     set %echolorme  $+ $2
  52.   }
  53. }
  54. ;===Définition de la clé===
  55. alias setcle {
  56.   if (!$1) {
  57.     set %cle $$?"Définissez la clé privée"
  58.   }
  59.   else {
  60.     set %cle $1
  61.   }

n°1245658
darkangel
C2FFA
Posté le 14-11-2005 à 22:04:26  profilanswer
 

Merçi, beaucoup, je vais regarder ça :jap:

mood
Publicité
Posté le 14-11-2005 à 22:04:26  profilanswer
 

n°1294819
mosquitout
Posté le 30-01-2006 à 14:57:36  profilanswer
 

Salut,
Instructif ce que j'ai pu lire ici. Je commence à m'intéréssé à ce domaine et suis encore au tout début.
Je viens d'essayer ça qui parait assez simple
Function Crypt(chaine As String, clé As Integer) As String
Dim Crypt1 As String
Dim I As Integer
For I = 1 To Len(chaine)
    Crypt1 = Crypt1 & Format(Asc(Mid(chaine, I, 1)) Xor Asc(clé))
Next
Crypt = Crypt1
End Function
 
Pourtant cela ne marche pas à tout les coup, ex avec la chaine "439950853", cela me génère le résultat "611111721071" donc de longueur différente. Dans le détail, c'est le Xor du "9" qui pose problème car il génère "11" au lieu d'uun seul caractère !!! Il y aurait-il qlq chose à rajouter dans le code pour oter cette erreur possible ?
Sinon, pour les débutant comme moi, je trouve que le xor c'est déjà pas mal  ;)

n°1294832
darkangel
C2FFA
Posté le 30-01-2006 à 15:12:06  profilanswer
 

Je ne sais pas si ca a rapport avec ton pb, mais mon problème n'en était pas un : en effet, cela merdait uniquement à l'affichage du texte crypté. Je pouvais le sauvegarder, puis le decrypter, le texte original apparaissait bien :)

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Suivante

Aller à :
Ajouter une réponse
 

Sujets relatifs
[VBA] [ALGO] Découper une chaine de charactères d'après séparateurComment faire d'une solution VBA un programme .exe ?
Enlever les messages "etes vous sur ..." d'acces grace à VBA[VBA Excel] Problème insertion de formule
[URGENT] Gros gros problème Access (VBA)[VBA Excel] enregistrement du classeur excel
[VBA] Le passage de parametre par référence ne marche pas???[VBA excel] composant ActiveX
[excel VBA] test valeur numérique[VBA] Dernière ligne d'un fichier texte.
Plus de sujets relatifs à : [VBA] Algoritme de cryptage


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR