Seiteninhalt ... >


       Money












Ich weiß, was ich jetzt mache. Ich mache einen Ausflug in die Welt - Informatik und Banken. Das kriegt TalkOrTell natürlich einen Name: TalkOrTell Money. Was ich hier vorstellen werde sind vier essentielle Punkte:
  1. Natürlich nicht vergessen: BitCoins. Und die Algorithmen hinter den BitCoins
  2. Was niemand wahr genommen hat, ich bin Kunde bei der Volksbank - und ich habe ein Werbebanner von der Volksbank auf meiner Homepage: http://www.talkortell.de, dort erwartet sie dieses Logo, und es wird sie weiter zur Volksbank leiten. Was an dieser Stelle nicht häufig besprochen ist, was ist Online-Banking? Wozu brauchen wir Online-Banking. Ich selbst haben Kunden-Stammvertrag bei der Volksbank. Und: Ich mache Online-Banking. Ich werde anhand meines eigenen Online-Bankings einfach mal vorstellen, wie das geht. Dafür werde ich natürlich sicher nicht mein Online-Banking vorstellen, indem ich allerhand Passwörter Preis gebe - so blöd bin ich dann noch nicht. Allerdings kann es nicht schaden, wenn Bilder, mit dem berühmten Print-Screen vorgestellt werden. Nötigenfalls sind natürlich zu spezifische Daten einfach überdeckt. Umgekehrt: Das Thema fängt hier gerade erst an: Wichtiges Thema beim Zahlungsverkehr: Die IBAN. Daher verbergen sich natürlich weitere schöne Geheimnisse. Diese werden möglichs plausibel dargestellt Es gibt zurfälligerweise bei der Volksbank einen Kunden - Max Mustermann, oder wie auch, der hat ein frei zugängliches Online-Banking-System.
    Und wir sehen häufig Kunden in der Bank, die ihre Überweisungen auch heute noch per Überweisungsschein bewerkstelligen. An dieser Stelle wäre es von Vorteil, die Vorzüge des Online-Bankings ein Mal so richtig an zu preisen.
  3. Computer im Bankennetzwerk - ja, auch das sind Terminals - die Automaten, arbeiten mit einem Computernetzwerk - und wie könnte es so sein TCP/IP wurde nicht einfach als Spielerei für Liebhaber des Internets entwickelt, sondern, dazu dass es wirklich verwendbar ist. Das Bankennetzwerk verwendet S-W-I-F-T. Es ist sicher gut, dieses vor zu stellen, heute arbeitet es nicht mehr mit X.25 sondern mit TCP/IP, auf den entsprechenden Protokollebenen. Und natürlich, wenn es das zulässt. S-W-I-F-T ist generell ein Netzwerk, was beschreibt, wie die Aktionen im entsprechenden Netz stattfinden, aber: Es ist natürlich Mal interessant zu fragen: Was verbirgt sich denn jetzt hinter den Computern - wie bei uns mit Log-Skripten und SQL. Da kann ich nicht zu viel versprechen, ob man darin überhaupt einen Einblick bekommt.
  4. Nächstes Thema: Was natürlich interessant ist, sind allgemeine Mathematische Methoden für das Finanzwesen, das fängt bei den ganz einfachen Operationen an, Zinsen und Zinseszinsen. Damals in der Schule, da waren wir noch jung. 10 oder 11 Jahre alt, damals ist uns das schwer gefallen - manchmal wenigstens - heute sind wir deutlich älter und uns fällt das nicht mehr schwer - aber oft kommen wir nicht dazu, uns damit zu beschäftigen, es wäre vielleicht gut, ein Mal erneut nach langer Zeit einen Blick darauf zu werfen
  5. Vielleicht auch interessant - als einer der Abschlüsse - das Thema Marxismus. Ich werde einfach nicht die gesamte Ökonomie vorstellen, sondern was Karl Marx auf seinen ersten Seiten vorstellt: Nämlich solche Dinge: Wie Wert und Austauschcharakter der Wahren (? war das glaube ich?) und natürlich das berühmte Gleichungssystem darf nicht fehlen. Dazu kann man auch noch ein paar kritische Punkte gegenüber der Wirtschaftssituation in der Welt anführen. Das wird natürlich häufig übersehen. Es gibt ein paar Fakten, die lassen einen jeden und eine jede aufhorchen, wenn man davon hört: Zum Beispiel ist Deutschland auf Platz 9 oder 7, der Ölverbraucher und Platz 49, was die Gewinnung betrifft. Das ist keine Kritik an Deutschland. Im Gegenteil, Deutschland sind auch die Hände gebunden und: Niemand sollte für sein Kapital kritisiert werden. Ein häufiger Fehler, der in der Geschichte schon für große Irrtümer sorgte - vielleicht auch ein Punkt, den man erwähnen sollte: Wie geht man mit der Situation um, dass andere Reichtum haben, man selber nicht. Und auch erwähnenswert, neben dem Erdöl: Schaut man in das Periodensystem findet man eine Menge Metalle. Ein Großteil des Periodensystems sind Metalle. Und wer in Chemie, das Periodensystem nicht gelernt hat, wird erschrocken sein, wie viele Metalle es in Wirklichkeit gibt. Das hat natürlich Auswirkungen auf uns Menschen, denn so hat sogar die Chemie einen Einfluss auf die Ökonomie.
    Wenn man an TalkOrTell Money denkt, dann denkt man natürlich an Finanzberatung. Umgekehrt: So ist Karl Marx, das Kapital, als richtig oder falsch bewiesen, genauso wie das Vorkommen von Rohstoffen auf der Erde, ein wichtiges Thema wenn es um die Orientierung auf dem Finanzmarkt geht. Ob Karl Marx richtig liegt oder nicht, es ist ein richtiger Schritt, zur richtigen Orientierung.


Jetzt fangen wir natürlich nicht mit den Bitcoins an. Sondern wir fangen gleich Mal mit Online-Banking an. Das geschieht allerdings auf meiner Homepage, als HTML-Seite. Diesen Text jetzt Einleitung auch auf meiner HTML-Seite.

Online-Banking

So, wenn wir jetzt auf das Online-Banking der Volksbank-Tübingen http://www.vr-bank-tuebingen.de/gehen, finden wir:

Hier gehen wir auf Online-Banking. Dort müssen wir uns einloggen:


Da finden wir eine &Uuuml;bersicht.


Was jetzt interessant ist, ist die Umsatzanzeige:


Hier finden wir jeden Zahlungsverkehr der letzten Zeit wieder. Und zwar von dem Zeitraum von einer Woche, bis zu 3 Monaten. Kontoführungsgebühren werden übrigens immer am letzten des 03 (März), 06 (Juni), 09, September und 12 (Dezember) abgehoben. Aber am letzten Tag dieser Monate. Wichtig ist: Wenn wir keinen Überziehungskredit haben, scheitert es an einem Cent, wenn ein Kontoeinzug stattfinden soll.
Das gute am Online-Banking ist, wir haben unser Konto direkt im Auge.
Und es sind Läden wie Kaufland, die sogar erlauben, für 0,25 Euro mit der Karte zu bezahlen. Da kann man sich zur Not, wenn man nicht wohlhabend ist, über den Tag retten. Denn ein Kaffee kann schon Mal wichtig sein, wenn man den Tag positiv überleben will. Und dann kann man sich locker mal einen Kaffee kaufen, auch wenn nicht viel übrig bleibt. Dafür muss man natürlich wissen, was auf dem Konto ist - und dazu ist das gut.


Damit nimmt man sich natürliche Mühe ab. Wenn man einen Zahlungsauftrag per Internet macht, weil jeder weiß bei den Zettelchen ist schnell mal etwas falsches reingeschrieben.


Hier spielt die TAN eine Rolle. Die TAN ist eine Transaction Number. Und da wird eine Nummer auf das Smartphone geschickt, die Nummer des Smartphones ist im System hinterlegt. In Folge dessen erst findet die Überweisung statt.
Das sind die Funktionen, die am Aller simpelsten sind und die ich nutze.

Die Bezahlfunktionen

Im nächsten Teil stelle ich die Bezahlweisen dar, die es gibt.
Die IBAN: Internationale Bankkontonummer. Sie ist in der EU verpflichtend.
  • 2-stelliger Ländercode, etwas wie DE
  • 2-stellige Prüfsumme,
  • Maximal 30-stellige Kontoidentifikation
Die 30-stellige Kontoidentifikation besteht aus der Kontonummer, sowie weiteren Ziffern.
Die Prüfsumme berechnet sich wie folgt:
  1. Setze die Prüfziffern auf 00
  2. Stelle die vier ersten Stellen an das Ende der IBAN
  3. Ersetze alle Buchstaben durch Zahlen, wobei A = 10, B = 11, ..., Z = 35
  4. Berechne den ganzzahligen Rest, der bei der Division durch 97 bleibt.
  5. Subtrahiere den Rest von 98
Das machen wir an einem Beispie, nämlich meiner IBAN:

DE11 6406 1854 0066 6710 00



  1. DE00 6406 1854 0066 6710 00
  2. 6406 1854 0066 6710 00 DE00
  3. 6406 1854 0066 6710 00 1314 00
  4. 640618540066671000131400 MOD 97 = 11

IBAN
Jetzt schreiben wir ein Programm, zur Berechnung des MOD bei so großen Zahlen.
Problem: Wir haben eine Grosse Zahl, die nicht in das QUAD-WORD-Schema von 2^64 passt.

Die Rechenregeln für den Modulo lauten:


(a ADD b) MOD c = ((a MOD c) ADD (b MOD c)) MOD c
(a SUB b) MOD c = ((a MOD c) SUB (b MOD c)) MOD c
(a MUL b) MOD c = ((a MOD c) MUL (b MOD c)) MOD c



Außserdem gilt:


(1234 5678 1000) MOD c

= ((((1234 MOD c) MUL (1 0000 0000 MOD c)) MOD c) MUL
(((5678 MOD c) MUL (1 0000 MOD c)) MOD c) MUL
(1234 MOD c)) MOD c



Jetzt müssen wir zwei Mögliche Fehler ausmärzen:
  1. Einen Bug habe ich gefunden. Das muss in diesem Falle nicht *1000 heißen.
    Warum?
    Schauen wir uns mal eine IBAN an.
    Da steht
    Am Ende, die letzten zwei:
    3124 1213
    Gut. Aber!
    3124 0000
    Das sind nicht 3124 * 1000
    sondern 3124 * 10000
  2. Jetzt gibt es ein Problem meine Damen und Herren, ab einem Punkt, spukt mein C-Programm scheinbar einen Fehler aus. Man schaue sich mal an:


    int x[] = {6406, 1854, 66, 6710, 13, 1400}; /* Richtig */
    int x[] = {6406, 1854, 0066, 6710, 0013, 1400}; /* Falsch */



    Richtig! C kommt nicht mit führenden Nullen vorne aus!
Jetzt die C-Quelltexte, erst, der mit einer Ausführung quasi als hingeschriebenen Terminals


#include <stdio.h>

int main(void) {

   //int x[] = {2105, 170, 12, 3456, 7813, 1400};
   //int x[] = {2105, 0170, 0012, 3456, 7813, 1400};
   int x[] = {6406, 1854, 66, 6710, 13, 1400};
   int y;

   x[5] = x[5] % 97;
   x[4] = ((x[4] % 97) * (10000 % 97)) % 97;
   x[3] = ((x[3] % 97) * (10000 % 97) * (10000 % 97)) % 97;
   x[2] = ((x[2] % 97) * (10000 % 97) * (10000 % 97) * (10000 % 97)) % 97;
   x[1] = ((x[1] % 97) * (10000 % 97) * (10000 % 97) * (10000 % 97) * (10000 % 97)) % 97;
   x[0] = ((x[0] % 97) * (10000 % 97) * (10000 % 97) * (10000 % 97) * (10000 % 97) * (10000 % 97)) % 97;

   y = (x[5] + x[4]) % 97;
   y = (y + x[3]) % 97;
   y = (y + x[2]) % 97;
   y = (y + x[1]) % 97;
   y = (y + x[0]) % 97;
   y = y % 97;

   printf("%i\n", 98 - y);

return 0;
}



iban.c


Und jetzt der C-Quelltext, als Algorithmus:


#include <stdio.h>

int main(void) {
   int x[] = {6406, 1854, 66, 6710, 13, 1400};
   //int x[] = {2105, 170, 12, 3456, 7813, 1400};
   int i, j;
   int y, z;
   int sum;

   for(i = 5, z = 1; i >= 0; i--) {
      x[i] = x[i] % 97;
      z = z % 97;
      x[i] = x[i] * z;
      x[i] = x[i] % 97;
      z = (z * (10000 % 97)) % 97;
   }

   for(i = 5, y = 0; i >= 0; i--) {
      y = (y + (x[i] % 97));
      y = y % 97;
   }
   y = y % 97;

   sum = 98 - y;

   printf("%i\n", sum);

return 0;
}



iban2.c



   <form>
      <fieldset>
         <legend>IBAN</legend>
         <label for="iban1"> </label>
         <input type="text" id="iban1" size="4"/>
         <input type="text" id="iban2" size="4"/>
         <input type="text" id="iban3" size="4"/>
         <input type="text" id="iban4" size="4"/>
         <input type="text" id="iban5" size="4"/>
         <input type="text" id="iban6" size="2"/>
         <button onclick="ibanfunc()">Check</button>
      </fieldset>
   </form>

<script>
   function ibanfunc() {

   var ibantext1 = document.getElementById('iban1').value;
   var ibantext2 = document.getElementById('iban2').value;
   var ibantext3 = document.getElementById('iban3').value;
   var ibantext4 = document.getElementById('iban4').value;
   var ibantext5 = document.getElementById('iban5').value;
   var ibantext6 = document.getElementById('iban6').value + "13";
   var ibantext7 = "1400";
   if(ibantext1.length != 4)
      alertwronginput();
   else if((ibantext1.charAt(0) != 'D') && (ibantext1.charAt(0) != 'd'))
      alertwronginput();
   else if((ibantext1.charAt(1) != 'E') && (ibantext1.charAt(1) != 'e'))
      alertwronginput();
   else if(ibantext2.length != 4)
      alertwronginput();
   else if(ibantext3.length != 4)
      alertwronginput();
   else if(ibantext4.length != 4)
      alertwronginput();
   else if(ibantext5.length != 4)
      alertwronginput();
   else if(ibantext6.length != 4)
      alertwronginput();
   else {
      alert(ibantext7);
   var x1 = parseInt(ibantext2, 10);
   var x2 = parseInt(ibantext3, 10);
   var x3 = parseInt(ibantext4, 10);
   var x4 = parseInt(ibantext5, 10);
   var x5 = parseInt(ibantext6, 10);
   var x6 = parseInt(ibantext7, 10);

   x6 = x6 % 97;
   x5 = ((x5 % 97) * (10000 % 97)) % 97;
   x4 = ((x4 % 97) * (10000 % 97) * (10000 % 97)) % 97;
   x3 = ((x3 % 97) * (10000 % 97) * (10000 % 97) * (10000 % 97)) % 97;
   x2 = ((x2 % 97) * (10000 % 97) * (10000 % 97) * (10000 % 97) * (10000 % 97)) % 97;
   x1 = ((x1 % 97) * (10000 % 97) * (10000 % 97) * (10000 % 97) * (10000 % 97) * (10000 % 97)) % 97;

   var y = (x6 + x5) % 97;
   y = (y + x4) % 97;
   y = (y + x3) % 97;
   y = (y + x2) % 97;
   y = (y + x1) % 97;
   y = y % 97;
   y = 98 - y;

   alert(y.toString());

   }
   function alertwronginput() {
      alert("This is not a german IBAN!");
   }
}
</script>



Ist die Prüfsumme richtig eingegeben, oder die IBAN richtig, das prüfen wir in folgendem Program:
IBAN

Abfrage der BLZ

http://www.talkortell.de/money/blz.php

So, jetzt habe ich noch ein Mal etwas lustiges für sie:
Die IBAN setzt sich ja zusammen, hauptsächlich aus Bankleitzahl und Kontonnummer - in Deutschland.
Jetzt habe ich mal nach einer Liste mit Bankleitzahlen gesucht.
Die findet man hier:

https://www.bundesbank.de/de/aufgaben/unbarer-zahlungsverkehr/serviceangebot/bankleitzahlen/bankleitzahlen-602638

Und hier geht es weiter:

https://www.bundesbank.de/de/aufgaben/unbarer-zahlungsverkehr/serviceangebot/bankleitzahlen/download-bankleitzahlen-602592

Und hier ist die Liste. Das ist zum Glück Plaintext. Damit werde ich aus der IBAN die Bank berechnen. Die Liste, die als Plaintext vorliegt, werde ich in einer MySQL Datenbank speichern. Außerdem werde ich, die BIC vergleichen, wenn sie angegeben wird.

blz.txt

Jetzt brauchen wir erst ein Programm, was die BLZ und das Kreditinstitut aus dieser Text-Datei ausließt.

readblz.c

Dann brauchen wir ein Programm, was die Daten in der Datenbank speichert:

readblz2.c

Und zum Schluss noch eine richtigere Version, was das Auslesen betriff:

readblz3.c

Und das führt zum PHP-Skript, natürlich kann man sich dieses anzeigen lassen

http://www.talkortell.de/money/blz.php

Damit die Sache aber richtig funktioniert, muss erst mit mysql eine Datenbank angelegt werden:



mysql
CREATE DATABASE banking;
USE banking;
CREATE TABLE banking (blz VARCHAR (256), bankinstitut (256));



Kapital

kapital.pdf