Blaster2k Skrevet 17. januar 2005 Del Skrevet 17. januar 2005 Jeg søkte på forumet og fann en post om kryptering og dekryptering av tekst i VB, men jeg forstod lite av den. Noen som gidder å forklare litt hvordan man kan gjøre det? Lenke til kommentar
GeirGrusom Skrevet 17. januar 2005 Del Skrevet 17. januar 2005 En veldig enkel metode (som blir brukt i Total Annihilation sitt HPI format) er exclusive or med posisjonen i teksten Egentlig burde du gjøre det om til Unicode og ta to byte av gangen, men dette er bare et eksempel, så jeg gjør det så enkelt som mulig. Private Function CryptText(text As String) As String Dim out As String Dim c As Integer For X = 1 To Len(text) out = out & Chr(Asc(Mid(text, x, 1)) Xor X) Next CryptText = out End Function Du kjører samme funksjonen for å dekryptere igjen. Selvsagt er dette er utrolig lett å finne ut av, men ingen kan lese det uten å dekryptere det først, og det er mange måter å gjøre det verre på. Lenke til kommentar
Jonas Skrevet 17. januar 2005 Del Skrevet 17. januar 2005 Geir, hva er det Xor gjør? Har søkt litt på MSDN og det virker som om den skal returnere en Boolean-verdi utifra to andre Boolean-verdier Lenke til kommentar
Blaster2k Skrevet 17. januar 2005 Forfatter Del Skrevet 17. januar 2005 Bare et problem med meg, jeg er ikke helt stø på hvordan man bruker functions i vb Lenke til kommentar
Jonas Skrevet 17. januar 2005 Del Skrevet 17. januar 2005 (endret) Funksjonen, eller funksjoner generelt, brukes slik: Private Sub Form_Load() MsgBox CryptText("Hallo") End Sub Private Function CryptText(text As String) As String Dim out As String Dim x As Integer For x = 1 To Len(text) out = out & Chr(Asc(Mid(text, x, 1)) Xor x) Next CryptText = out End Function Endret 17. januar 2005 av Jonas Lenke til kommentar
Blaster2k Skrevet 17. januar 2005 Forfatter Del Skrevet 17. januar 2005 Takker og bukker i massevis Lenke til kommentar
Blaster2k Skrevet 17. januar 2005 Forfatter Del Skrevet 17. januar 2005 (endret) edit: dobbelpost Endret 17. januar 2005 av Blaster2k Lenke til kommentar
GeirGrusom Skrevet 17. januar 2005 Del Skrevet 17. januar 2005 Xor er veldig enkel, Den gir tilbake True hvis: En av verdiene er true, men ikke hvis begge er true. 1 Xor 1 = 0 1 Xor 0 = 1 0 Xor 1 = 1 0 Xor 0 = 0 i motsetning til Or som også gir True hvis begge er True. Når det blir lagt sånn som det er der, blir det kalt Binary Exclusive Or, hvis du har det i en If setning (eller en av variablene er en Boolean) er det en Logical Exclusive Or. Lenke til kommentar
kaffenils Skrevet 18. januar 2005 Del Skrevet 18. januar 2005 Geir, hva er det Xor gjør? Har søkt litt på MSDN og det virker som om den skal returnere en Boolean-verdi utifra to andre Boolean-verdier Eller du kan også si at den inverserer bittene. 11001010 xor 11111111 gir 00110101 Lenke til kommentar
-=Petter=- Skrevet 18. januar 2005 Del Skrevet 18. januar 2005 hvorfor ikke bruke PGP, da kan man kryptere det meste.... bruker det til å kryptere mail etc.. Lenke til kommentar
GeirGrusom Skrevet 19. januar 2005 Del Skrevet 19. januar 2005 (endret) Eller du kan også si at den inverserer bittene. 11001010 xor 11111111 gir 00110101 Forutsett at verdi2 er 11111111 ja. Det finnes tusen krypteringsmetoder, men de aller fleste er temmelig innviklete. Til passord og slikt er MD5 ganske vanlig, fodi den kun gir fra seg en hash kode, og passordet kan ikke hentes tilbake fra denne verdien. Kikk i .NET framework i Security.Cryptography, der er det mer en nok å velge imellom. Endret 19. januar 2005 av GeirGrusom Lenke til kommentar
kaffenils Skrevet 19. januar 2005 Del Skrevet 19. januar 2005 Eller du kan også si at den inverserer bittene. 11001010 xor 11111111 gir 00110101 Forutsett at verdi2 er 11111111 ja. Det finnes tusen krypteringsmetoder, men de aller fleste er temmelig innviklete. Til passord og slikt er MD5 ganske vanlig, fodi den kun gir fra seg en hash kode, og passordet kan ikke hentes tilbake fra denne verdien. Kikk i .NET framework i Security.Cryptography, der er det mer en nok å velge imellom. Det var ikke i noe krypteringsøyemed jeg skrev dette. Det var kun ment for å illustrere hva xor gjør. Lenke til kommentar
Blaster2k Skrevet 26. januar 2005 Forfatter Del Skrevet 26. januar 2005 Noen som kan forklare hvordan man kan kryptere text ved hjelp av en krypteringskode. Altså man må ha en kode som ble skrevet in da man enkryptet for å kunne dekrypte teksten. Kanskje litt kryptisk skrevet? Lenke til kommentar
aadnk Skrevet 26. januar 2005 Del Skrevet 26. januar 2005 Går det greit å forklare ved bruk av eksempler? Public Function Crypt(sText As String, sPassword As String, Optional Encode As Boolean) As String Dim Tell As Long, CharIndex As Long, Value As Long ' Lag en kopi av strengen Crypt = sText ' Gå gjennom alle tegnene i strengen som skal krypteres/dekrypteres For Tell = 1 To Len(sText) ' Denne er indeksen til hvilket tegn i passordet vi skal benytte CharIndex = CharIndex + 1 ' Dersom indeksen overstiger størrelsen på passordet, begynn på nytt If CharIndex > Len(sPassword) Then CharIndex = 1 End If ' Det vi nokså enkelt gjør med følgende kode, er å legge til eller trekke fra VERDIEN av ' det gjeldende tegnet i teksten med VERDIEN av et bestemt tegn i passordet. Poenget her er ' at passordet må (i de fleste tilfeller) være identisk for at utdata skal være leselig ved ' dekrypteringen. ' Boundaries-funksjonen sørger for at vi ikke overstiger (i ASCII) den gyldige spennvidden (0-255) ' Altså, er resultatet av utregningen 458 (å + å), subtraheres det med 255, som gir tallet 203. ' Når vi senere kjører 203 (tegnet Ë), subtraheres tallet med å (229), hvilket gir -26. Dette ' ligger utenfor spennvidden og blir følgelig rettet opp ved å addere tallet med 255. Dette gir ' -26 + 255 = 229 (å), det tegnet vi opprinnelig startet med. If Encode Then ' Krypter teksten Value = Boundaries(Asc(Mid(sText, Tell, 1)) + Asc(Mid(sPassword, CharIndex, 1))) Else ' Dekrypter Value = Boundaries(Asc(Mid(sText, Tell, 1)) - Asc(Mid(sPassword, CharIndex, 1))) End If ' Skriv resultatet til utdata Mid(Crypt, Tell, 1) = Chr(Value) Next End Function ' Denne funksjonen adderer eller subtraherer inndata dersom det er nødvendig Public Function Boundaries(ByVal lngValue As Long) As Long If lngValue < 0 Then lngValue = lngValue + 255 If lngValue > 255 Then lngValue = lngValue - 255 Boundaries = lngValue End Function Funksjonen Crypt benyttes på følgende måte: Kryptering: Crypt [tekst], [nøkkel], False Dekryptering: Crypt [tekst], [nøkkel], True Denne algoritmen er naturligvis ikke særlig sikker, men til enkel bruk, f.eks for å hindre at uvedkommende umiddelbart kan se informasjon, kan du vurdere å bruke den. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå