Zdarza się, że pewne dane w naszej bazie (np. hasła użytkowników w naszym własnym systemie logowania) muszą być szczególnie chronione. Często wystarcza najprostsze szyfrowanie, poniżej podaję jak je zrealizować. Nie myślcie jednak, że skoro nasz szyfr jest prosty, to jest również łatwy do złamania dla ciekawskich. Podobną metodę zastosowano w Accessie 97 do zaszyfrowania hasła bazy danych.
Public Function sz(haslo) Dim i As Integer, w As String Const s = "Litwo, Ojczyzno moja, Ty jesteś jak zdrowie"'s - to nasz tajny kluczFor i = 1 To Len(haslo) w = w & Chr(Asc(Mid(haslo, i, 1)) Xor Asc(Mid(s, i, 1))) Next i sz = w End Function '------ Poprawka Pawła Durysa ' w = w & Chr(Asc(Mid(haslo, i, 1)) Xor Asc(Mid(s, i, 1))) 'linia powyzej nie pozwala na zakodowanie hasla dluzszego niz nasz klucz 'linia ponizej rozwiazuje ten problem ' w = w & Chr(Asc(Mid(haslo, i, 1)) Xor Asc(Mid(s, (i Mod (Len(s) - 1)) + 1, 1))) '------ Koniec poprawki
Przykładowo, wywołanie sz("yXF&V")
zwraca "512Q9"
Jednak zaszyfrowanie informacji, to dopiero połowa zadania - trzeba je jeszcze
odszyfrować. Prezentowana funkcja sama potrafi się dekodować, oto ilustracja
tej zasady:
sz("yXF&V")
zwraca "512Q9" sz("512Q9")
zwraca "yXF&V" sz(sz("512Q9"))
zwraca "512Q9"Uwaga: Nie zawsze zdekodowany ciąg daje się wyświetlić na ekranie, ponieważ może on zawierać dowolne znaki ASCI, także te, które nie mają swojej reprezentacji wizualnej. Przykładem takiego znaku jest chr(1) lub chr(8), np:
sz("MaCOV")
zwraca "789", czyli ciąg: chr(1) & chr(8) & "789"
Jednak brak odpowiedniej czcionki dla znaku, nie przeszkadza w prawidłowym odkodowaniu hasła. Łańcuch "789" jest prawidłowo dekodowany przez funkcję na pierwotną postać "MaCOV".
K. P.