Accueil > > > CRYPTAGE SIMPLE EN XOR AVEC CLÉ ALÉATOIRE.
CRYPTAGE SIMPLE EN XOR AVEC CLÉ ALÉATOIRE.
Information sur la source
Description
Ce module permet de crypter de façon simple une chaine ou un fichier de paramétrage d'application par exemple. Il est clair que le cryptage XOR ne convient pas pour des données TRèS sensibles, il décourage les simples curieux. Au lancement de l'application on decode_ini() et à l'arrêt on code_ini(). Il faut definir les points suivants : gIniSrc = Extension du fichier initial non crypté ( ".src") gIniExt = Extension du fichier crypté (".dat") Et voilà pour un exemple de traitement...
Source
- Option Explicit
- '***************************************************************************
- 'Module : modCrypt.bas
- 'Version : 1.0.0
- 'Auteur : DChomet
- 'Description : Ce module permet de crypter une chaine ou un fichier en XOR
- '***************************************************************************
- 'CODAGE
- 'm_Cle = CreateCle()
- 'Message = m_Cle & Crypt(Message, m_Cle)
-
- 'DECODAGE
- 'm_Cle = Left$(Message, 2)
- 'tmpMsg = Crypt(Mid$(Message, 3), Val(m_Cle))
-
- Private Function CreateCle() As String
- 'renvoi une clé aléatoire entre 10 et 99
- CreateCle = Int((Rnd * 90) + 10)
- End Function
-
- Function Code(ByVal m_msg As String) As String
- '?Code("Ceci est ma chaine")
- If m_msg = "" Then Exit Function
- If (VBA.Left$(m_msg, 2) = "__") Then
- Code = m_msg
- Else
- Dim m_Cle As String
- m_Cle = CreateCle()
- Code = "__" & m_Cle & Crypt(m_msg, m_Cle)
- End If
- End Function
-
- Function Decode(ByVal m_msg As String) As String
- '?Decode("__67."*/7,y m',.*")
- If m_msg = "" Then Exit Function
- If (VBA.Left$(m_msg, 2) <> "__") Then
- Decode = m_msg
- Else
- Dim m_Cle As String
- m_Cle = VBA.Mid$(m_msg, 3, 2)
- Decode = Crypt(VBA.Mid$(m_msg, 5, Len(m_msg)), VBA.Val(m_Cle))
- End If
- End Function
-
- Sub code_ini()
- Dim iniCode As Integer, F As Integer, p As String, m As Long
- If Dir(App.Title & "_config" & gIniSrc) <> "" Then
- 'If gIniIdx = 0 Then
- gIniIdx = FreeFile
- Open App.Title & "_config" & gIniSrc For Binary As #gIniIdx
- 'End If
- If Dir(App.Title & "_config" & gIniExt) <> "" Then Kill App.Title & "_config" & gIniExt
- iniCode = FreeFile
- Open App.Title & "_config" & gIniExt For Binary As #iniCode
- m = LOF(gIniIdx)
- p = String(m, Chr(0))
- Get #gIniIdx, 1, p
- Put #iniCode, , Code(p)
- Close #gIniIdx: gIniIdx = 0
- Close #iniCode
- If Dir(App.Title & "_config" & gIniSrc & "_BAK") <> "" Then Kill App.Title & "_config" & gIniSrc & "_BAK"
- Name App.Title & "_config" & gIniSrc As App.Title & "_config" & gIniSrc & "_BAK"
- If Dir(App.Title & "_config" & gIniSrc) <> "" Then Kill App.Title & "_config" & gIniSrc
- End If
- End Sub
-
- Sub decode_ini()
- Dim iniCode As Integer, p As String, m As Long
- If Dir(App.Title & "_config" & gIniExt) <> "" Then
- iniCode = FreeFile
- Open App.Title & "_config" & gIniExt For Binary As #iniCode
- If Dir(App.Title & "_config" & gIniSrc) <> "" Then Kill App.Title & "_config" & gIniSrc
- 'If gIniIdx = 0 Then
- gIniIdx = FreeFile
- Open App.Title & "_config" & gIniSrc For Binary As #gIniIdx
- 'End If
- m = LOF(iniCode)
- p = String(m, Chr(0))
- Get #iniCode, 1, p
- Put #gIniIdx, , Decode(p)
- Close #iniCode
- 'On ne ferme surtout pas le fichier, cela sert de verouillage pendant le fonctionnement
- Close #gIniIdx: gIniIdx = 0
- '========
- End If
- End Sub
-
- Function Crypt(ByVal Text As String, ByVal Cle As Integer)
- Dim i As Long, S As String
- For i = 1 To Len(Text)
- S = S & Chr$(Cle Xor Asc(Mid$(Text, i, 1)))
- Next
- Crypt = S
- End Function
Option Explicit
'***************************************************************************
'Module : modCrypt.bas
'Version : 1.0.0
'Auteur : DChomet
'Description : Ce module permet de crypter une chaine ou un fichier en XOR
'***************************************************************************
'CODAGE
'm_Cle = CreateCle()
'Message = m_Cle & Crypt(Message, m_Cle)
'DECODAGE
'm_Cle = Left$(Message, 2)
'tmpMsg = Crypt(Mid$(Message, 3), Val(m_Cle))
Private Function CreateCle() As String
'renvoi une clé aléatoire entre 10 et 99
CreateCle = Int((Rnd * 90) + 10)
End Function
Function Code(ByVal m_msg As String) As String
'?Code("Ceci est ma chaine")
If m_msg = "" Then Exit Function
If (VBA.Left$(m_msg, 2) = "__") Then
Code = m_msg
Else
Dim m_Cle As String
m_Cle = CreateCle()
Code = "__" & m_Cle & Crypt(m_msg, m_Cle)
End If
End Function
Function Decode(ByVal m_msg As String) As String
'?Decode("__67."*/7,y m',.*")
If m_msg = "" Then Exit Function
If (VBA.Left$(m_msg, 2) <> "__") Then
Decode = m_msg
Else
Dim m_Cle As String
m_Cle = VBA.Mid$(m_msg, 3, 2)
Decode = Crypt(VBA.Mid$(m_msg, 5, Len(m_msg)), VBA.Val(m_Cle))
End If
End Function
Sub code_ini()
Dim iniCode As Integer, F As Integer, p As String, m As Long
If Dir(App.Title & "_config" & gIniSrc) <> "" Then
'If gIniIdx = 0 Then
gIniIdx = FreeFile
Open App.Title & "_config" & gIniSrc For Binary As #gIniIdx
'End If
If Dir(App.Title & "_config" & gIniExt) <> "" Then Kill App.Title & "_config" & gIniExt
iniCode = FreeFile
Open App.Title & "_config" & gIniExt For Binary As #iniCode
m = LOF(gIniIdx)
p = String(m, Chr(0))
Get #gIniIdx, 1, p
Put #iniCode, , Code(p)
Close #gIniIdx: gIniIdx = 0
Close #iniCode
If Dir(App.Title & "_config" & gIniSrc & "_BAK") <> "" Then Kill App.Title & "_config" & gIniSrc & "_BAK"
Name App.Title & "_config" & gIniSrc As App.Title & "_config" & gIniSrc & "_BAK"
If Dir(App.Title & "_config" & gIniSrc) <> "" Then Kill App.Title & "_config" & gIniSrc
End If
End Sub
Sub decode_ini()
Dim iniCode As Integer, p As String, m As Long
If Dir(App.Title & "_config" & gIniExt) <> "" Then
iniCode = FreeFile
Open App.Title & "_config" & gIniExt For Binary As #iniCode
If Dir(App.Title & "_config" & gIniSrc) <> "" Then Kill App.Title & "_config" & gIniSrc
'If gIniIdx = 0 Then
gIniIdx = FreeFile
Open App.Title & "_config" & gIniSrc For Binary As #gIniIdx
'End If
m = LOF(iniCode)
p = String(m, Chr(0))
Get #iniCode, 1, p
Put #gIniIdx, , Decode(p)
Close #iniCode
'On ne ferme surtout pas le fichier, cela sert de verouillage pendant le fonctionnement
Close #gIniIdx: gIniIdx = 0
'========
End If
End Sub
Function Crypt(ByVal Text As String, ByVal Cle As Integer)
Dim i As Long, S As String
For i = 1 To Len(Text)
S = S & Chr$(Cle Xor Asc(Mid$(Text, i, 1)))
Next
Crypt = S
End Function
Conclusion
Ce n'est qu'un exemple parmi tant d'autres, et peut-être une base pour faire beaucoup mieux !
Sources de la même categorie
Commentaires et avis
|
Derniers Blogs
PRéSENTATION DES API REST DE WINDOWS AZURE : LISTER LES COMPTES DE STORAGEPRéSENTATION DES API REST DE WINDOWS AZURE : LISTER LES COMPTES DE STORAGE par richardc
http://www.c2idotnet.com/articles/presentation-des-api-rest-de-windows-azure-lister-les-comptes-de-storage
Désolé pour "toto", mais c2i existait avant blogs.developpeur.org et c'est mon site "officiel" ;-) ...
Cliquez pour lire la suite de l'article par richardc [HTML5] SLIDES ET DéMOS : AUTOUR DU W3C , NOUVEAUX STANDARDS ET WEB MOBILE (LILLE)[HTML5] SLIDES ET DéMOS : AUTOUR DU W3C , NOUVEAUX STANDARDS ET WEB MOBILE (LILLE) par Gio
Très bonne après-midi passée lors cette conférence avec le W3C, organisée par L' Inria sur les nouveaux standards, ce Mardi 14 Février, on sent vraiment que çà bosse au W3C, et l'avenir est très très prometteur pour le HTML5, notamment ...
Cliquez pour lire la suite de l'article par Gio GESTION D'EXCEPTION AVEC LES TASKSGESTION D'EXCEPTION AVEC LES TASKS par richardc
Nous avons vu dans un précédent article comment utiliser Task pour effectuer des opérations dans un autre thread.
Malheureusement, comme tout le monde n'est pas parfait, il se peut que cette exécution se passe mal et qu'une exception se produise.
La...
Cliquez pour lire la suite de l'article par richardc DéMARRONS AVEC LES TASKSDéMARRONS AVEC LES TASKS par richardc
Que vous le vouliez ou non, le développement multi-tâche est maintenant une obligation pour toute nouvelle application. Il est donc vital d'en comprendre les mécanismes et de s'y mettre le plus tôt possible.
En attendant le .NET Framework 4.5 avec le...
Cliquez pour lire la suite de l'article par richardc
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|