{"id":55000438,"date":"2007-02-01T00:00:00","date_gmt":"2021-02-11T21:08:30","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=438"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Datenverschluesselung","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Datenverschluesselung\/","title":{"rendered":"Datenverschl&uuml;sselung"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg05.met.vgwort.de\/na\/f1fc7bf1a08143b295bd34f45a570a11\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>H&auml;lt Ihre Access-Datenbank Datenschutzrichtlinien stand Eine gute Frage, die Sie beim Entwickeln von Anwendungen f&uuml;r Unternehmen oder Beh&ouml;rden zu h&ouml;ren bekommen werden. Sie werden dann etwa mit dem Access-Sicherheitssystem argumentieren, also der Geschichte mit den Arbeitsgruppen. Das wird den Datenschutzbeauftragten bei sensiblen Daten aber h&ouml;chstwahrscheinlich nicht zufrieden stellen, denn Zugriff auf die Tabellen erh&auml;lt man &uuml;ber den einen oder anderen Trick dennoch. Es gibt aber Techniken, die selbst den Einblick in die Tabellen wertlos machen k&ouml;nnen&#8230;<\/b><\/p>\n<\/p><\/div>\n<div class=\"story\">\n<p class=\"zwischen-berschrift-oberer-spaltenrand\">Unsichere Datenbanken<\/p>\n<p>Die Absicherung einer Access-Datenbank &uuml;ber eine Arbeitsgruppendatei (MDW) beschr&auml;nkt zwar den Kreis der Zugriffsberechtigten auf Nutzer, die sich mit Benutzername und Kennwort einloggen m&uuml;ssen. Mit einigen zus&auml;tzlichen Vorkehrungen wie dem Ausblenden des Datenbankfensters, Erstellen einer MDE-Datenbank, Deaktivieren der Umschalttaste beim Start der Anwendung und dem Einsatz einer Access-Runtime statt der Vollversion scheint der Datenzugriff zwar auf die Pr&auml;sentationsschicht, also Formulare und Berichte, begrenzt zu sein. Was aber sollte einen neugierigen Nutzer davon abhalten, sich eine Kopie des Backends und der MDW, auf die nun mal systembedingt alle User Vollzugriff haben m&uuml;ssen, zu erstellen und dann in Ruhe seine Access-Vollversion an die MDW anzuschlie&szlig;en und sich nach Eingabe seiner Anmeldedaten in aller Ruhe die Tabellen anzusehen<\/p>\n<p>Sicher, es gibt noch ausgefeiltere Methoden, die Tabellen vor dem User zu sch&uuml;tzen, etwa der Einsatz von WITH-OWNERACCESS-OPTION-Abfragen, die nur dem Entwickler (Owner) oder dem VBA-Code den Zugriff erlauben. Das nutzt aber alles nichts, wenn er ein Datenrettungs-Tool wie <b>AccessRecovery <\/b>&uuml;ber das Backend laufen l&auml;sst, das im Stande ist, unter Umgehung der MDW-Absicherung die Tabellen bin&auml;r auszulesen und ungesch&uuml;tzt wiederherzustellen.<\/p>\n<p>Das ist auch der Grund daf&uuml;r, dass viele Organisationen Access-Datenbanken prinzipbedingt als unsicher ablehnen. Es gibt aber auch Datenschutzbeauftragte, die eine Access-Datenbank akzeptieren, wenn sichergestellt ist und plausibel gemacht werden kann, dass die Daten verschl&uuml;sselt sind. Ohne einen speziellen Zugriffsschl&uuml;ssel sind die Tabellen dann unbrauchbar. Das zu realisieren ist gar nicht so schwer.<\/p>\n<p><b>Sicherere Datenbanken<\/b><\/p>\n<p>Tabellenfelder, die etwa Namen und Adressen von Klienten enthalten, die nicht &ouml;ffentlich einsehbar sein sollen, k&ouml;nnen Sie mit verschiedenen Algorithmen verschl&uuml;sseln. Die Tabelle enth&auml;lt dann nur sinnlose Zeichenfolgen, mit denen keiner etwas anfangen kann. Schwieriger ist es, Felder anderer Datentypen wie <b>Date<\/b> oder <b>Long <\/b>zu verschl&uuml;sseln, denn das Ergebnis der Verschl&uuml;sselung muss ja dann den gleichen Datentyp aufweisen, damit es im Feld gespeichert werden kann. Oder man muss andere Felder wie Bin&auml;rtypen einsetzen, um das Verschl&uuml;sselungsergebnis aufnehmen zu k&ouml;nnen. Da es jedoch f&uuml;r Zahlenwerte h&ouml;chst selten einen Grund zur Verschl&uuml;sselung geben d&uuml;rfte, besch&auml;ftigen sich die folgenden Techniken fast ausschlie&szlig;lich mit Strings und Textfeldern.<\/p>\n<p><b>Texte verschl&uuml;sseln<\/b><\/p>\n<p>Es gibt zahllose Methoden, um einen String zu verschl&uuml;sseln. Das Ziel ist zun&auml;chst, aus einem Text einen anderen zu machen, der keine R&uuml;ckschl&uuml;sse auf den urspr&uuml;nglichen Inhalt mehr zul&auml;sst. Umgekehrt muss aus dem verschl&uuml;sselten Text genauso wieder der Ursprungstext zu errechnen sein. Ein Beispiel f&uuml;r eine sehr simple Routine zeigt Listing 1.<\/p>\n<p class=\"kastentabelleheader\">Listing 1: Textzeichen durcheinanderbringen<\/p>\n<pre>Function ScrambleString(sIn As String) As String\r\n     Dim i As Long, lLen As Long, \r\n     Dim sChr As String, iChr As Integer\r\n     lLen = Len(sIn)\r\n     ScrambleString = String(lLen, 0)\r\n     For i = 1 To lLen\r\n         sChr = Mid(sIn, i, 1)\r\n         iChr = Asc(sChr)\r\n         sChr = Chr$(iChr Xor 255)\r\n         Mid(ScrambleString, i, 1) = sChr\r\n     Next i\r\n     ScrambleString = StrReverse(ScrambleString)\r\nEnd Function<\/pre>\n<p>Dabei wird jedes Zeichen des Strings in <b>sChr<\/b> zwischengespeichert, daraus die Ordinalzahl ermittelt (<b>iChr<\/b>) und diese mit der boolschen Operation <b>Xor 255 <\/b>bearbeitet. Hieraus wird ein neuer String mit den Zeichen der neuen Ordinalzahlen <b>iChr<\/b> erstellt, der anschlie&szlig;end noch mit der Funktion <b>StrReverse <\/b>umgedreht wird. Heraus kommt, wenn Sie der Funktion beispielsweise den Text &quot;Unternehmen&#8220; &uuml;bergeben, die Zeichenkette &#8220; &#8218;&#154;&#8220;-&#154;&#8217;&#154;&lt;&#8218;&ordf;&#8220;. An diesem String l&auml;sst sich wohl nichts mehr erkennen, was auf die Ausgangszeichenkette &#8222;Unternehmen&#8220; schlie&szlig;en lie&szlig;e.<\/p>\n<p>Der Clou an der Funktion ist, dass Sie ihr umgekehrt genauso den verschl&uuml;sselten String &uuml;bergeben k&ouml;nnen, um wieder an den korrekten Text zu kommen: Aus &#8220; &#8218;&#154;&#8220;-&#154;&#8217;&#154;&lt;&#8218;&ordf;&#8220; wird dann wieder &#8222;Unternehmen&#8220;.<\/p>\n<p>Dennoch ist die Methode zu einfach, um einem gewieften Hacker die Arbeit wirklich schwer zu machen. Beispielsweise wird jedes Zeichen im Quelltext in jeweils genau das gleiche Zielzeichen im verschl&uuml;sselten Text umgewandelt. Im Beispiel wird ein &#8222;n&#8220; immer zu &#8222;&#154;&#8220;. &uuml;ber stochastische Analyseverfahren etwa l&auml;sst sich f&uuml;r einen Krypto-Experten hieraus leicht das Verschl&uuml;sselungsverfahren ermitteln.<\/p>\n<p>Deshalb haben sich verschiedene standardisierte Verfahren etabliert, nach denen Texte sicherer verschl&uuml;sselt werden k&ouml;nnen, wobei zur Verschl&uuml;sselung meist noch ein eindeutiger Key zum Einsatz kommt, ohne den man den Text nicht mehr zur&uuml;ckverwandeln kann. Diese Algorithmen tragen Namen wie RC2, RC4, DES, Blowfish, TEA, Serpent oder Gost und kennen jeweils mehrere Derivate. Sie unterscheiden sich im Grad der Verschl&uuml;sselung &#8211; quasi dem &#8222;Sicherheitsgrad&#8220; &#8211; und auch im Berechnungsaufwand. Der Aufruf sieht in Pseudo-Code meist so aus:<\/p>\n<pre>Verschl&uuml;sselter Text = KryptoFunktion (UrsprungsText, Schl&uuml;ssel)<\/pre>\n<p><b>Tabellenfelder verschl&uuml;sseln<\/b><\/p>\n<p>In Datenbanken, wo etwa &uuml;ber Abfragen gro&szlig;e Datenmengen auszuwerten sind, ist man auf einen Kompromiss zwischen Verschl&uuml;sselungsst&auml;rke und Verarbeitungsgeschwindigkeit angewiesen. Deshalb sollten hier Algorithmen zum Einsatz kommen, die relativ schnell arbeiten, aber ausreichend sicher sind. Das wohl am h&auml;ufigsten eingesetzte Verfahren ist die RC4-Verschl&uuml;sselung. Ein Vorteil der Methode ist, dass Windows entsprechende API-Funktionen mitbringt, die flott zu Werke gehen. Man kann zweifellos jedes Verschl&uuml;sselungsverfahren auch in VBA-Code nachbauen; weil aber Stringverarbeitung unter VB eine etwas lahme Angelegenheit ist, kommt man mit Aufrufen auf Funktionen in separaten DLLs erheblich besser weg.<\/p>\n<p>Die Beispieldatenbank zu diesem Beitrag enth&auml;lt ein Modul <b>mdlEncrypt<\/b>, in dem Sie die Prozeduren <b>TestDeEncrypt <\/b>und <b>TestDeEncryptVBA <\/b>ausf&uuml;hren k&ouml;nnen. Beide verschl&uuml;sseln und entschl&uuml;sseln nach dem RC4-Verfahren in einer Schleife 20.000 Strings. <b>TestDeEncryptVBA <\/b>macht das aber &uuml;ber reinen VBA-Code, die andere bem&uuml;ht dazu API-Funktionen der Windows-Bibliothek <b>advapi32.dll<\/b>. Sie werden feststellen, dass die Crypto-Routinen der <b>advapi32.dll <\/b>etwa dreimal so schnell sind wie die von VBA. Pro Sekunde lassen sich auf einem aktuellen Rechner damit etwa 100.000 Strings verschl&uuml;sseln.<\/p>\n<p>Die RC4-Crypto-Methoden von <b>advapi32 <\/b>kommen &uuml;brigens an vielen Stellen von Windows selbst zum Einsatz &#8211; und auch in Access: Die Verschl&uuml;sselung von Passw&ouml;rtern im Sicherheitssystem von JET &uuml;ber die PIDs benutzt sie ebenfalls.<\/p>\n<p>Der Code f&uuml;r die Verschl&uuml;sselungsmethoden ist in den zwei Klassenmodulen <b>clsRC4 <\/b>(VBA pur) und <b>clsCypto <\/b>(Verwendung der <b>advapi32<\/b>) untergebracht. Die Ergebnisse sind nicht ganz kompatibel: Ein verschl&uuml;sselter Text der einen Klasse kann nicht mit den Routinen der anderen wiederhergestellt werden.<\/p>\n<p>RC4 hat noch einen weiteren Vorteil: Die Ergebnis-Strings sind genauso lang, wie die Eingabe-Strings. Damit ist sichergestellt, dass die f&uuml;r Textfelder in den Eigenschaften eingestellte Feldgr&ouml;&szlig;e nicht &uuml;berschritten wird, wenn ein Textinhalt darin verschl&uuml;sselt wird.<\/p>\n<p>Die genaue Funktionsweise der beiden Klassen soll hier nicht weiter erl&auml;utert werden. Verschl&uuml;sselungsverfahren sind ein Thema f&uuml;r Vorlesungen eines ganzen Semesters.<\/p>\n<p><!--30percent--><\/p>\n<p><b>Was soll ich verschl&uuml;sseln<\/b><\/p>\n<p>Das h&auml;ngt wohl vom Einsatzzweck ab. Erw&auml;hnt wurden schon Adressfelder: Namen, Stra&szlig;en- und Ortsbezeichnungen. Oder weitere Personendaten: Telefonnummern, E-Mail-Adressen oder auch Memofelder, die Anmerkungen zu den Personen enthalten. Falls die Datenbank ein programmiertes Berechtigungssystem enth&auml;lt, mit dem etwa der Zugriff auf bestimmte Elemente je nach Benutzer gesteuert wird, k&auml;men f&uuml;r die Verschl&uuml;sselung noch in Tabellen gespeicherte Benutzernamen und Kennw&ouml;rter in Frage. <\/p>\n<p class=\"zwischen-berschrift-oberer-spaltenrand\">Vorhandene Tabellen ver- und entschl&uuml;sseln<\/p>\n<p>Wie Daten nachtr&auml;glich verschl&uuml;sselt werden k&ouml;nnen, zeigt die Beispieldatenbank anhand der Tabelle <b>tblKunden<\/b> in zun&auml;chst unverschl&uuml;sselter Form. &uuml;ber die Anf&uuml;geabfrage <b>qry_EncryptKunden <\/b>k&ouml;nnen Sie die Daten in die in identischem Aufbau vorliegende Tabelle <b>tblKundenEncrypt <\/b>transferieren. Leeren Sie dazu die Tabelle zuerst mit der L&ouml;schabfrage <b>qry_DelEncryptKunden<\/b>.<\/p>\n<p>Nicht alle Felder der Ursprungstabelle werden dabei verschl&uuml;sselt. Es sind gerade so viele, dass die Datens&auml;tze anschlie&szlig;end nicht mehr nachvollziehbaren Inhalt wiedergeben. Sehen wir uns an, wie etwa das Feld <b>Firma <\/b>mit der Abfrage verschl&uuml;sselt wird:<\/p>\n<pre>INSERT INTO tblKundenEnrypt (Firma)\r\nSELECT EncryptString([tblKunden].[Firma],GetCryptKey())\r\nFROM tblKunden<\/pre>\n<p>Das Feld <b>Firma <\/b>der Tabelle <b>tblKunden <\/b>wird der Verschl&uuml;sselung per &ouml;ffentlicher benutzerdefinierter Funktion <b>EncryptString <\/b>des Moduls <b>mdlEncrypt <\/b>unterzogen. Sie erwartet als Parame-ter einerseits den Eingangs-String, andererseits den Verschl&uuml;sselungs-Key. Der wird hier aber nicht hartkodiert in die Abfrage geschrieben, sondern seinerseits &uuml;ber eine benutzerdefinierte Funktion <b>GetCryptKey <\/b>erhalten, die so aussieht:<\/p>\n<pre>Function GetCryptKey() As String\r\n GetCryptKey = StrReverse(&quot;60TFOSssom\")\r\nEnd Function <\/pre>\n<p>Das ist gleichsam der Generalschl&uuml;ssel f&uuml;r die Datenbankverschl&uuml;sselung. Dies ist sicher nicht der Weisheit letzter Schluss und wurde der Einfachheit halber so eingesetzt. Der hartkodierte Schl&uuml;ssel steckt hier im Code verborgen, indem der String &#8222;60TFOSssom&#8220; mit der Funktion <b>StrReverse <\/b>zu &#8222;mossSOFT06&#8220; gemacht wird. Alle verschl&uuml;sselten Felder der Tabelle <b>tblKundenEncrypt <\/b>sind also mit dem RC4-Key &#8222;mossSOFT06&#8220; bearbeitet. <\/p>\n<p>Um die verschl&uuml;sselte Tabelle komplett in entschl&uuml;sselter Datenblattansicht anzuzeigen, rufen Sie die Auswahlabfrage <b>qry_DecryptKunden <\/b>auf. Das Feld <b>Firma <\/b>wird in dieser so entschl&uuml;sselt:<\/p>\n<pre>SELECT DecryptString([tblKundenEnrypt].[Firma],GetCryptKey()) AS Firma\r\nFROM tblKundenEnrypt<\/pre>\n<p>Die benutzerdefinierte Funktion <b>DecryptString <\/b>arbeitet analog zu <b>EncryptString <\/b>und stellt die korrekten Texte wieder mit unserem supergeheimen Key &#8222;mossSOFT06&#8220; her.<\/p>\n<p>Die Tabelle <b>tblKunden <\/b>k&ouml;nnen Sie anschlie&szlig;end aus der Datenbank entfernen &#8211; sie wird nun nicht mehr gebraucht.<\/p>\n<p><b>Verschl&uuml;sselte Daten und Formulare<\/b><\/p>\n<p>Wenn die Daten der Tabellen verschl&uuml;sselt sind, dann ist ein nicht unerheblicher Mehraufwand bei der Gestaltung der Formulare zu beachten. Schlie&szlig;lich k&ouml;nnen die Formularfelder nicht mehr einfach, wie gewohnt, an die Tabellenfelder gebunden werden. Sie w&uuml;rden ja dann nur den verschl&uuml;sselten Inhalt wiedergeben. Die entsprechenden Textboxen m&uuml;ssen deshab ungebunden vorliegen und ihnen sind Strings per VBA zuzuweisen. Das ist im Formular <b>frmKunden <\/b>der Beispieldatenbank realisiert, zu dem Sie &uuml;ber das Intro-Formular gelangen, nachdem Sie eine erm&uuml;dende Login-Prozedur durchlaufen haben &#8230;<\/p>\n<p><b>Login<\/b><\/p>\n<p>Falls Sie die Umschalttaste beim &ouml;ffnen der Beispieldatenbank nicht gedr&uuml;ckt halten, zeigt sich das Intro-Formular von Access-im-Unternehmen. Ein Klick auf &#8222;Start&#8220; leitet Sie dann zu einem Eingabedialog, der Ihren Benutzernamen abfragt. Ist der korrekt, muss ein Kennwort angegeben werden. Falls das ebenfalls stimmt, wird das Formular <b>frmKunden <\/b>ge&ouml;ffnet. Das fragt seinerseits nach dem Generalschl&uuml;ssel, den Sie bereits kennen. Nach g&uuml;ltiger Eingabe k&ouml;nnen Sie endlich die Daten der Tabelle <b>tblKundenEncrypt <\/b>unverschl&uuml;sselt ansehen und bearbeiten. Andernfalls werden Sie nur Kauderwelsch zu Gesicht bekommen.<\/p>\n<p>Damit Sie nicht nachforschen m&uuml;ssen: Versuchen Sie es mit &#8222;Leser&#8220; als Benutzername und Kennwort sowie dem Key &#8222;mossSOFT06&#8220; f&uuml;r das Formular <b>frmKunden<\/b>.<\/p>\n<p>Das alles ist Spielerei, soll aber verdeutlichen, wie Anmeldeinformationen in verschl&uuml;sselten Tabellen verwendet werden k&ouml;nnen. Hier sind sie in der Tabelle <b>tblLogin <\/b>gespeichert, wobei nur das Feld Passwort mit dem RC4-Key &#8222;mossSOFT06&#8220; verschl&uuml;sselt wird.<\/p>\n<p><b>Ungebundene Felder<\/b><\/p>\n<p>Mit falschem Schl&uuml;ssel am Formular <b>frmKunden <\/b>angemeldet, erhalten Sie etwa das Ergebnis aus Bild 1.<\/p>\n<div class=\"abbildung\">\n            <img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_01\/Verschluesselung-web-images\/frmKundenNotOK_opt.jpeg\" alt=\"frmKundenNotOK.tif\" \/>\n        <\/div>\n<div class=\"abbildung\">\n<p><b><span style=\"color:darkgrey\">Bild 1: Verschl&uuml;sselte Daten im Formular bei falschem Schl&uuml;ssel<\/span><\/b><\/p>\n<\/p><\/div>\n<p>Anfangen kann man damit gar nichts und gesperrt sind die Datens&auml;tze au&szlig;erdem. In einer Produktivumgebung w&uuml;rde man nat&uuml;rlich das Formular in dieser Form erst gar nicht anzeigen, sondern einen Hinweis auf den ung&uuml;ltigen Schl&uuml;ssel liefern. Ist der aber korrekt, dann sieht das Ganze wie in Bild 2 aus.<\/p>\n<div class=\"abbildung\">\n            <img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_01\/Verschluesselung-web-images\/frmKundenOK_opt.jpeg\" alt=\"frmKundenOK.tif\" \/>\n        <\/div>\n<div class=\"abbildung\">\n<p><b><span style=\"color:darkgrey\">Bild 2: Entschl&uuml;sselte Daten im Formular bei g&uuml;ltigem Schl&uuml;ssel<\/span><\/b><\/p>\n<\/p><\/div>\n<p>Wenn Sie Daten in diesem Formular modifizieren oder hinzuf&uuml;gen, dann werden Sie bemerken, dass nichts davon gespeichert wird. Dazu muss f&uuml;r jeden Datensatz erst die Schaltfl&auml;che <b>Speichern <\/b>bet&auml;tigt werden. Es wurde bereits gesagt: Die Felder in diesem Formular sind ungebunden und werden jeweils im Ereignis <b>Beim Anzeigen <\/b>per VBA nach Entschl&uuml;sselung gef&uuml;llt. Damit werden &auml;nderungen der Feldinhalte nicht automatisch in der zugrunde liegenden Tabelle gespeichert. Auf den <b>Speichern<\/b>-Knopf k&ouml;nnte man verzichten, wenn es ein Ereignis in Access g&auml;be, das &#8222;Vor Datensatzwechsel&#8220; oder &auml;hnlich lautete und in dessen Ereig-nisprozedur man dann das explizite Speichern des Datensatzes veranlassen k&ouml;nnte. Das gibt es aber leider nicht (man k&ouml;nnte daf&uuml;r zweifellos einen Workaround programmieren, das Beispiel sollte jedoch nicht zu kompliziert werden).<\/p>\n<p>Nicht ganz selbsterkl&auml;rend ist, wie mit den Daten im Formular verfahren wird. Die folgende Beschreibung bezieht sich auf die in Listing 2 abgedruckte Prozedur, die beim &ouml;ffnen des Formulars ausgel&ouml;st wird:<\/p>\n<p class=\"kastentabelleheader\">Listing 2: Abfragen des Kennworts und Umwandeln der gebundenen in ungebundene Steuerelemente<\/p>\n<pre>Private Sub Form_Load()\r\n     m_Key = InputBox(&quot;Bitte authentifizieren Sie sich mit ihrem Passwort\" &amp; vbCrLf &amp; _\r\n     &quot;Ohne Authentifizierung k&ouml;nnen Sie gesch&uuml;tze Daten\" &amp; vbCrLf &amp; _\r\n     &quot;weder einsehen noch bearbeiten.\", &quot;Auth\", &quot;\")\r\n     If m_Key &lt;&gt; GetCryptKey Then\r\n         MsgBox &quot;Passwort nicht korrekt!\" &amp; vbCrLf &amp; _\r\n         &quot;Sie k&ouml;nnen die Daten nicht editieren und\" &amp; vbCrLf &amp; _\r\n         &quot;gesch&uuml;tze nicht einsehen.\", vbExclamation\r\n         Me!cmdSave.Enabled = False\r\n         Me.AllowAdditions = False\r\n     Else\r\n         bMayEdit = True\r\n         MsgBox &quot;Passwort akzeptiert\", vbInformation\r\n     End If\r\n     Dim ctl As Access.Control\r\n     Dim sField As String\r\n     For Each ctl In Me.Controls\r\n         If (ctl.ControlType = acTextBox) And (ctl.Name &lt;&gt; &quot;KundeID\") Then\r\n             ctl.Tag = IIf(ctl.Tag = -1, &quot;:\", &quot;&quot;) &amp; ctl.ControlSource\r\n             ctl.ControlSource = &quot;&quot;\r\n             ctl.Locked = Not bMayEdit\r\n         End If\r\n     Next ctl\r\nEnd Sub<\/pre>\n<p>Zun&auml;chst wird der RC4-Schl&uuml;ssel mit einer Inputbox abgefragt und in der privaten Variablen <b>m_Key <\/b>angelegt. Sie vergleicht ihn mit dem Generalschl&uuml;ssel aus der Funktion <b>GetCryptKey<\/b>. Bei &uuml;bereinstimmung wird die Formularvariable <b>bMayEdit <\/b>auf <b>True <\/b>gesetzt; sie wird in den anderen Prozeduren noch ben&ouml;tigt.<\/p>\n<p>Bei falschem Schl&uuml;ssel in <b>m_Key <\/b>wird also eine Meldung ausgegeben, der <b>Speichern<\/b>-Button deaktiviert und die M&ouml;glichkeit zum Anf&uuml;gen von Datens&auml;tzen gesperrt (<b>AllowAdditions = False<\/b>). Anschlie&szlig;end werden die Textfelder im Formular bearbeitet.<\/p>\n<p>Dies bedarf weiterer Erl&auml;uterungen: Wenn Sie das Formular im Entwurf &ouml;ffnen, dann werden Sie feststellen, dass die Textfelder gebunden sind und das Formular auch die Datenherkunft <b>tblKundenEncrypt<\/b> besitzt. Somit lassen sich die Textfelder leichter anlegen. Zur Laufzeit sollen die Felder aber ja ungebunden sein. Und das erledigt die Schleife im unteren Teil von Listing 2. Alle Felder, die in ungebundene verwandelt werden sollen, haben in der <b>Marke<\/b>-Eigenschaft (<b>Tag<\/b>) den Wert <b>-1 <\/b>stehen.<\/p>\n<p>Die Schleife setzt nun f&uuml;r alle Textfelder (<b>acTextbox<\/b>) bis auf <b>KundeID <\/b>die Eigenschaft <b>ControlSource <\/b>auf einen Null-String. Damit sind sie anschlie&szlig;end ungebunden. Gleichzeitig wird die <b>Tag<\/b>-Eigenschaft der Felder als Zwischenspeicher auf den bisherigen Steuerelementinhalt gestellt, damit man sp&auml;ter noch wei&szlig;, zu welchem Tabellenfeld die Textbox geh&ouml;rt.<\/p>\n<p>F&uuml;r alle verschl&uuml;sselten Felder wird zudem ein &#8222;:&#8220; vor den Feldnamen gestellt, damit sie anschlie&szlig;end als zu ent-\/verschl&uuml;sselnde Felder gekennzeichnet sind. Ob das Feld zum Bearbeiten gesperrt ist, wird &uuml;ber die <b>Locked<\/b>-Eigenschaft vom Ergebnis der Schl&uuml;ssel&uuml;berpr&uuml;fung (<b>bMayEdit<\/b>) anh&auml;ngig gemacht.<\/p>\n<p>Die nun ungebundenen Felder werden im Ereignis <b>Beim Anzeigen <\/b>mit Daten gef&uuml;llt (s. Listing 3):<\/p>\n<p class=\"kastentabelleheader\">Listing 3: Leeren der Felder beim Anlegen eines neuen Datensatzes und Anzeigen der Inhalte bei vorhandenen Datens&auml;tzen<\/p>\n<pre>Private Sub Form_Current()\r\n     Dim ctl As Access.Control\r\n     Dim sField As String\r\n     Dim rs As DAO.Recordset\r\n     If Me.NewRecord Then\r\n         For Each ctl In Me.Controls\r\n             If (ctl.ControlType = acTextBox) And (ctl.Name &lt;&gt; &quot;KundeID\") Then\r\n                 ctl.value = Null\r\n             End If\r\n         Next ctl\r\n         Exit Sub\r\n     End If\r\n     Set rs = Me.RecordsetClone\r\n     rs.FindFirst &quot;[KundeID]=&quot; &amp; Me!KundeID\r\n     For Each ctl In Me.Controls\r\n         If (ctl.ControlType = acTextBox) And (ctl.Name &lt;&gt; &quot;KundeID&quot;) Then\r\n             sField = ctl.Tag\r\n             If bMayEdit Then\r\n                 If Left(sField, 1) = &quot;:&quot; Then\r\n                     sField = Mid(sField, 2)\r\n                     ctl.value = DecryptString(rs(sField).value, GetCryptKey())\r\n                 Else\r\n                     ctl.value = rs(sField).value\r\n                 End If\r\n             Else\r\n                 ctl.value = rs(Replace(sField, &quot;:&quot;, &quot;&quot;)).value\r\n             End If\r\n         End If\r\n     Next ctl\r\n     Set rs = Nothing\r\nEnd Sub<\/pre>\n<p>Hier wird zun&auml;chst die <b>Recordset<\/b>-Variable <b>rst <\/b>auf eine Kopie des Formular-Recordsets gesetzt (<b>RecordsetClone<\/b>). Warum wird nicht direkt mit dem Formular-Recordset gearbeitet Der Grund ist, dass die Feldinhalte sich beim Springen zwischen den Datens&auml;tzen per Navigationsleiste nicht immer synchron zu den Feldinhalten des Formular-Recordsets verhalten, sondern der Navigation nachhinken. Erstaunlich, aber wahr, und das f&uuml;r alle Access-Versionen! M&ouml;glicherweise kommen hier Cache-Effekte ins Spiel. Darum wird also der aktuelle Datensatz mit der Kopie des Recordsets und der Methode <b>FindFirst <\/b>auf <b>KundeID <\/b>eingestellt.<\/p>\n<p>In einer Schleife werden dann, &auml;hnlich wie in Listing 2, alle Textfelder durchlaufen und ihnen in Abh&auml;ngigkeit davon, ob sie entschl&uuml;sselt werden m&uuml;ssen &#8211; der Feldname in <b>Control.Tag <\/b>enth&auml;lt ein f&uuml;hrendes &#8222;:&#8220; &#8211; oder nicht, entweder der RC4-entschl&uuml;sselte Wert (<b>DecryptString<\/b>) oder der direkte Wert des Kopie-Recordsets (<b>rst(sField).Value<\/b>) verpasst.<\/p>\n<p>Eine Spezialbehandlung erfahren noch neue Datens&auml;tze, identifiziert durch <b>Me.NewRecord = True<\/b>. Da die Textfelder ungebunden sind, wird ihr angezeigter Inhalt nicht automatisch gel&ouml;scht, wenn ein neuer Datensatz angelegt wird.<\/p>\n<p>Die Inhalte des vorigen Datensatzes bleiben stehen. Deshalb m&uuml;ssen sie in dieser Routine explizit auf Null gesetzt werden:<\/p>\n<pre>If Me.NewRecord Then\r\n For Each ctl In Me.Controls\r\n If (ctl.ControlType = acTextBox) _<br \/> And (ctl.Name &lt;&gt; &quot;KundeID\") Then\r\n ctl.Value = Null\r\n End If\r\n Next ctl\r\nEnd If<\/pre>\n<p>Datensatz speichern: Die durch Bet&auml;tigen der <b>Speichern<\/b>-Schaltfl&auml;che ausgel&ouml;ste Prozedur <b>cmdSave_Click <\/b>ist &auml;hnlich wie die in Listing 3 aufgebaut. Der einzige Unterschied besteht darin, dass die Feldinhalte hier umgekehrt dem Formular-Recordset zugewiesen werden und dass gegebenenfalls ver- und nicht entschl&uuml;sselt wird:<\/p>\n<pre>Me.Recordset(sField).Value = Nz(ctl.value) <\/pre>\n<p>oder<\/p>\n<pre>Me.Recordset(sField).Value = _<br \/> EncryptString(Nz(ctl.Value), GetCryptKey())<\/pre>\n<p><b>Integer-Werte verschl&uuml;sseln<\/b><\/p>\n<p>Die Tabelle <b>tblKundenEncrypt <\/b>enth&auml;lt nur verschl&uuml;sselte Textfelder. Wollte man auch andere Datentypen einer Verschl&uuml;sselung unterziehen, etwa das <b>Long<\/b>-Feld <b>Kundencode<\/b>, dann wird die Sache komplizierter: Ein <b>Long<\/b>-Datentyp besteht nur aus 4 Bytes. Soll das Ergebnis der Verschl&uuml;sselung ebenfalls nur 4 Bytes aufweisen, damit es in ein entsprechendes Tabellenfeld gespeichert werden kann, dann l&auml;sst sich die RC4-Verschl&uuml;sselung nicht mehr ohne Weiteres anwenden.<\/p>\n<p>Hier k&ouml;nnen andere Algorithmen zum Einsatz kommen, die statt Zeichen zu verschl&uuml;sseln die einzelnen Bits des <b>Long<\/b>-Werts verarbeiten.<\/p>\n<p>Ein m&ouml;gliches Vorgehen zeigen die Prozedur <b>TestLongEncrypt <\/b>des Moduls <b>mdlEncrypt <\/b>und die enthaltenen Methoden <b>EncryptLong <\/b>und <b>DecryptLong <\/b>der Klasse <b>clsRC4<\/b>. Diese errechnen aus den Ordinalwerten der Zeichen des Keys einen Verschiebefaktor, um den die Bits des <b>Long<\/b>-Werts rotiert werden.<\/p>\n<p>Beispiel f&uuml;r das Linksrotieren eines Integers um drei Stellen: <\/p>\n<pre>0011 0101 0000 1000 &gt; 1010 1000 0100 0001<\/pre>\n<p>Aus 13576 wird in diesem Fall 43073.<\/p>\n<p>Beim Entschl&uuml;sseln wird dieser Vorgang dann wieder r&uuml;ckg&auml;ngig gemacht.<\/p>\n<p><b>Zusammenfassung<\/b><\/p>\n<p>Mit der Verschl&uuml;sselung von Daten k&ouml;nnen Sie Ihre Access-Datenbanken sicherer machen. Dieser Beitrag zeigt nur einen kleinen Ausschnitt aus der Welt der Kryptografie, n&auml;mlich die RC4-Verschl&uuml;sselung von Textdaten.<\/p>\n<p>Wenn Sie Interesse an weiterem Material haben sollten, dann finden Sie unter [1] eine sehr umfangreiche Sammlung von Visual Basic-Projekten, die sich leicht f&uuml;r VBA umschreiben oder direkt &uuml;bernehmen lassen. Hervorzuheben sind dabei die Projekte von David Midkiff, die alle erdenklichen Methoden bereitstellen.<\/p>\n<p class=\"zwischen-berschriftquellen\">Quellen<\/p>\n<p>[1] http:\/\/www.vb.kiev.ua\/code\/crypt\/<\/p>\n<h3>Downloads zu diesem Beitrag<\/h3>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>demo_encrypted.mdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/987C7680-1DEB-4B4A-BDE8-E34CF0B7A8F1\/aiu_438.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>H&auml;lt Ihre Access-Datenbank Datenschutzrichtlinien stand Eine gute Frage, die Sie beim Entwickeln von Anwendungen f&uuml;r Unternehmen oder Beh&ouml;rden zu h&ouml;ren bekommen werden. Sie werden dann etwa mit dem Access-Sicherheitssystem argumentieren, also der Geschichte mit den Arbeitsgruppen. Das wird den Datenschutzbeauftragten bei sensiblen Daten aber h&ouml;chstwahrscheinlich nicht zufrieden stellen, denn Zugriff auf die Tabellen erh&auml;lt man &uuml;ber den einen oder anderen Trick dennoch. Es gibt aber Techniken, die selbst den Einblick in die Tabellen wertlos machen k&ouml;nnen&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[66012007,662007,44000040,44000038,44000025],"tags":[],"class_list":["post-55000438","post","type-post","status-publish","format-standard","hentry","category-66012007","category-662007","category-Allgemein","category-Sicherheit","category-VBA_und_Programmiertechniken"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.9 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Datenverschl&uuml;sselung - Access im Unternehmen<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/access-im-unternehmen.de\/Datenverschluesselung\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Datenverschl&uuml;sselung\" \/>\n<meta property=\"og:description\" content=\"H&auml;lt Ihre Access-Datenbank Datenschutzrichtlinien stand Eine gute Frage, die Sie beim Entwickeln von Anwendungen f&uuml;r Unternehmen oder Beh&ouml;rden zu h&ouml;ren bekommen werden. Sie werden dann etwa mit dem Access-Sicherheitssystem argumentieren, also der Geschichte mit den Arbeitsgruppen. Das wird den Datenschutzbeauftragten bei sensiblen Daten aber h&ouml;chstwahrscheinlich nicht zufrieden stellen, denn Zugriff auf die Tabellen erh&auml;lt man &uuml;ber den einen oder anderen Trick dennoch. Es gibt aber Techniken, die selbst den Einblick in die Tabellen wertlos machen k&ouml;nnen...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Datenverschluesselung\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2021-02-11T21:08:30+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg05.met.vgwort.de\/na\/f1fc7bf1a08143b295bd34f45a570a11\" \/>\n<meta name=\"author\" content=\"Andr\u00e9 Minhorst\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Andr\u00e9 Minhorst\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"17\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Datenverschluesselung\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Datenverschluesselung\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Datenverschl&uuml;sselung\",\"datePublished\":\"2021-02-11T21:08:30+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Datenverschluesselung\\\/\"},\"wordCount\":2967,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Datenverschluesselung\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/f1fc7bf1a08143b295bd34f45a570a11\",\"articleSection\":{\"0\":\"1\\\/2007\",\"1\":\"2007\",\"3\":\"Sicherheit\",\"4\":\"VBA und Programmiertechniken\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Datenverschluesselung\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Datenverschluesselung\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Datenverschluesselung\\\/\",\"name\":\"Datenverschl&uuml;sselung - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Datenverschluesselung\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Datenverschluesselung\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/f1fc7bf1a08143b295bd34f45a570a11\",\"datePublished\":\"2021-02-11T21:08:30+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Datenverschluesselung\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Datenverschluesselung\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Datenverschluesselung\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/f1fc7bf1a08143b295bd34f45a570a11\",\"contentUrl\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/f1fc7bf1a08143b295bd34f45a570a11\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Datenverschluesselung\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Datenverschl&uuml;sselung\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"name\":\"Access im Unternehmen\",\"description\":\"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access\",\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/access-im-unternehmen.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\",\"name\":\"Andr\u00e9 Minhorst Verlag\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"contentUrl\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"width\":370,\"height\":111,\"caption\":\"Andr\u00e9 Minhorst Verlag\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\",\"name\":\"Andr\u00e9 Minhorst\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"caption\":\"Andr\u00e9 Minhorst\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Datenverschl&uuml;sselung - Access im Unternehmen","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/access-im-unternehmen.de\/Datenverschluesselung\/","og_locale":"de_DE","og_type":"article","og_title":"Datenverschl&uuml;sselung","og_description":"H&auml;lt Ihre Access-Datenbank Datenschutzrichtlinien stand Eine gute Frage, die Sie beim Entwickeln von Anwendungen f&uuml;r Unternehmen oder Beh&ouml;rden zu h&ouml;ren bekommen werden. Sie werden dann etwa mit dem Access-Sicherheitssystem argumentieren, also der Geschichte mit den Arbeitsgruppen. Das wird den Datenschutzbeauftragten bei sensiblen Daten aber h&ouml;chstwahrscheinlich nicht zufrieden stellen, denn Zugriff auf die Tabellen erh&auml;lt man &uuml;ber den einen oder anderen Trick dennoch. Es gibt aber Techniken, die selbst den Einblick in die Tabellen wertlos machen k&ouml;nnen...","og_url":"https:\/\/access-im-unternehmen.de\/Datenverschluesselung\/","og_site_name":"Access im Unternehmen","article_published_time":"2021-02-11T21:08:30+00:00","og_image":[{"url":"http:\/\/vg05.met.vgwort.de\/na\/f1fc7bf1a08143b295bd34f45a570a11","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"17\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Datenverschluesselung\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Datenverschluesselung\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Datenverschl&uuml;sselung","datePublished":"2021-02-11T21:08:30+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Datenverschluesselung\/"},"wordCount":2967,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Datenverschluesselung\/#primaryimage"},"thumbnailUrl":"http:\/\/vg05.met.vgwort.de\/na\/f1fc7bf1a08143b295bd34f45a570a11","articleSection":{"0":"1\/2007","1":"2007","3":"Sicherheit","4":"VBA und Programmiertechniken"},"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Datenverschluesselung\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Datenverschluesselung\/","url":"https:\/\/access-im-unternehmen.de\/Datenverschluesselung\/","name":"Datenverschl&uuml;sselung - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Datenverschluesselung\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Datenverschluesselung\/#primaryimage"},"thumbnailUrl":"http:\/\/vg05.met.vgwort.de\/na\/f1fc7bf1a08143b295bd34f45a570a11","datePublished":"2021-02-11T21:08:30+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Datenverschluesselung\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Datenverschluesselung\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Datenverschluesselung\/#primaryimage","url":"http:\/\/vg05.met.vgwort.de\/na\/f1fc7bf1a08143b295bd34f45a570a11","contentUrl":"http:\/\/vg05.met.vgwort.de\/na\/f1fc7bf1a08143b295bd34f45a570a11"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Datenverschluesselung\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Datenverschl&uuml;sselung"}]},{"@type":"WebSite","@id":"https:\/\/access-im-unternehmen.de\/#website","url":"https:\/\/access-im-unternehmen.de\/","name":"Access im Unternehmen","description":"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access","publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/access-im-unternehmen.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/access-im-unternehmen.de\/#organization","name":"Andr\u00e9 Minhorst Verlag","url":"https:\/\/access-im-unternehmen.de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/","url":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","contentUrl":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","width":370,"height":111,"caption":"Andr\u00e9 Minhorst Verlag"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f","name":"Andr\u00e9 Minhorst","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","caption":"Andr\u00e9 Minhorst"}}]}},"_links":{"self":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000438","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/comments?post=55000438"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000438\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55000438"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55000438"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55000438"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}