Gå til innhold

Erstatte bokstaver i en tekst?


Anbefalte innlegg

Videoannonse
Annonse

Du kan lage en matrise der alle bokstavene har et motstykke, a = x, b = k osv osv, så kan du søke gjennom den strengen du vil "kryptere" bokstav for bokstav og bytte ut hver bokstav etterhvert som du kommer til de. Problemet med dette er at du må legge inn kryptonøkkelen din i koden, du vil også oppdage ganske raskt at du ønsker å kunne benytte både store og små bokstaver, tall og andre tegn som komma, kolon osv. Matrisen har defor en lei tendens til å bli relativt stor. For å dekryptere er det bare å søke gjennom matrisen motsatt vei..

Lenke til kommentar

Man kan, om man kun ønsker en måte å skjule informasjonen og ikke har noe særlig behov for kryptografisk beskyttelse, benytte en simpel Xor-kryptering. Det, i likhet med rot13, er svært enkelt å forstå og lar seg dekrypteres ved å kjøre algoritmen to ganger (rot13(rot13("hallo")) er derfor "hallo"):

Public Function EncryptXor(ByVal Text As String, ByVal Key As String) As String

 

  With System.Text.Encoding.Unicode

 

      ' Konverterer strenger til byte-arrays

      Dim aData() As Byte = .GetBytes(Text)

      Dim aKey() As Byte = .GetBytes(Key)

 

      ' Utfører selve krypteringen

      EncryptXor(aData, aKey)

      Return .GetString(aData)

 

  End With

 

End Function

 

Public Sub EncryptXor(ByVal inputBuffer() As Byte, ByVal Key() As Byte)

 

  ' Xor virker på to binærstrenger (a og b) av samme lengde og returnerer en streng

  ' der en bit er èn dersom de to tilsvarende bittene i a og b er ulike (om ikke, 0).

 

  ' Eksempel:

  '   65 ("a" eller 0100.0001) Xor 109 ("d" eller 0110.1101) = 44 ("," eller 0010.1100)

  '   44 (",")                 Xor 109 ("d")                 = 65 ("a")

  For i = 0 To inputBuffer.Length - 1

      inputBuffer(i) = inputBuffer(i) Xor Key(i Mod Key.Length) ' Mod = rest etter divisjon t/n

  Next

 

End Sub

Ønsker du en smule mer sikrer/praktisk løsning, bør du ta en titt på System.Security.Cryptography-navneområdet.

Endret av aadnk
Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...