Enable Javascript


Last Arduino/ESP8266 project (click to open)

User Rating: 0 / 5

Star InactiveStar InactiveStar InactiveStar InactiveStar Inactive
 

Article Index

Database

De database:
Dat NWA (Naam, Adres, Woonplaats) database moet je niet serieus nemen, dit demo object moest toch een naam hebben.
Opslaan op een plaats naar keuze, ik kies voor Desktop, later plaatsen we twee kopieën in de VS .NET NAW Solution-Projecten. Open SQLite Administrator (Access of wat anders kan natuurlijk ook maar geeft waarschijnlijk ook meer bytes aan overhead) en maak de benodigde velden aan. In de 2e afb. staan al de velden met hun opties opgesomd (aangemaakt als in 1e afb.). Zoals je ziet is het in de praktijk niet echt bruikbaar maar voor deze demo ruim voldoende. Het veld Geheim, lengte 200 tekens, wordt voor het versleutelen gebruikt, blijft hier leeg en zit er nog even voor "spek en bonen" bij. Voor het gemak vul je gelijk wat records met je eigen data. Ik doe dat hier nogal fantasieloos maar wel makkelijk herkenbaar in de demo.
Het veld ID heeft hier maar een zeer beperkte functie maar is bij het verknopingen van tabellen onontbeerlijk (doen we hier niet aan). Maak nog een tabel aan met de naam Password met de velden Password en SubKey, elk met een lengte van 200 tekens (4e afb.). De waarden voor de velden Password en Subkey zijn in eenmalige programmacode aangemaakt:


' ''zo genereer je de eerste keer de waarden Password en SubKey
' ''voor in de Tabel Password
Dim Password As String = "0000"
Dim PasswordEncrypt As String = Encrypt(Password, Password)
' '' PasswordEncrypt: QZDIeuvQRZHlbi/Wl03y1w==
' ''                  ------------------------
Dim Subkey As String = "p|+I]{+IK3u%XqV+8|7h>%<e"
Dim SubkeyEncrypt As String = Encrypt(Subkey, Password)
' ''SubkeyEncrypt: 0RMMpQhV0lr6rrDDIH9GdSnv2yGemF8hjygr0YVJ+yyGnfZSI1kAbPBPowjIdWv6zgYFteNca1U5B0pWDGCJBg==
' ''               ----------------------------------------------------------------------------------------

Zoals je ziet is het wachtwoord met zichzelf versleuteld en de SubKey met het wachtwoord. De SubKey wordt samen met de Crypt-Key gebruikt om de datavelden "Geheim" te ver- en ontsleutelen. Als het wachtwoord wordt gewijzigd moet dus eerst de SubKey worden ontsleutelt om het dan met het nieuwe password opnieuw te versleutelen. Zie laatste afbeelding waar PasswordEncrypt en SubkeyEncrypt te plakken


Tabel en kolommen aanmaken...


ID = Prim.Key en auto-increment.
50 tekens per tekstveld is wel genoeg, Geheim 200 en Homepage 260.
De waarde van Relatiesoort komt later met ook tekst in een DataGridView Combobox.


Geheim blijft hier nog even geheim, in Textbox en DataGridView.columns wordt het met en zonder *-tjes weergegeven.


Er is een veld Password en SubKey nodig om de velden Geheim te ver- en ontsleutelen.
PasswordEncrypt (kopiëren en in veld Password plakken):
QZDIeuvQRZHlbi/Wl03y1w==
SubKeyEncrypt (kopiëren en in veld SubKey plakken):
0RMMpQhV0lr6rrDDIH9GdSnv2yGemF8hjygr0YVJ+yyGnfZSI1kAbPBPowjIdWv6zgYFteNca1U5B0pWDGCJBg==

Het versleutelde wachtwoord in de database is veilig. Als je het wachtwoord zomaar in de database of programmacode zet dan is het heel eenvoudig te achterhalen. Indien SubKey of, in Module Crypt, Key en/of IV worden gewijzigd dan is het wachtwoord onbruikbaar en geeft Decrypt een fout en blijven voortaan alle geheimen ook echt geheim. Dat laatste geld ook als het wachtwoord, na de eerste keer wijzigen, wordt vergeten. Tijdens DEBUGen kan het wachtwoord en de SubKey automatisch op boven vermelde waarden worden gereset met de procedure PasswordEnSubKeyReset() in Module PasswordDB.

TIP

Als je toch een database in je toepassing gebruikt kun je daar ook tabellen bij maken voor de opstartgegevens, talen,.
... en wat je nog meer kunt bedenken. Bij talen stopt je al je control-teksten, zoals van labels/knoppen/...., van één taal in één record. Via DataBinding of een BindinSourceEvent hang je de velden aan de juiste data-Column. Als van taal-record wordt gewisseld worden de schermteksten automatisch aangepast. Eventueel laat je de gebruiker zijn eigen schermteksten ingeven.