Darf man erfahren ob du irgendwie schonmal mit Kryptografie in Kontakt gekommen bist ? Theorie dahinter und so ? Wie sich sichere Algorhytmen auszeichnen, was für Schwächen es gibt, etc ? Mein Bauch sagt Nein.
Verschlüsselung ist ein heikles Thema und da würde ich mich wohl eher auf etwas vernünftiges verlassen, gibt ja genug php-basierte klassen / extensions für sichere kryto über aes, rsa und co.
Weil auf den ersten Blick lässt dein Code schon massive Mängel erkennen.
1) Es arbeitet auf ganz primitiver Zeichenebene anstatt Bit oder Byte-Ebene und stirbt daher einen grausamen Tod mit allen Multibyte-Zeichensätzen.
2) Du bringst in deine encode und decode-funktionen html-kram mit rein der dort nichts zu suchen hat.
3) Du nur Sachen verschlüsseln kannst für die das Alphabet stimmt, sprich man muss die Zeichen die der User beim PW eingeben darf limitieren auf das alphabet und ihm das sagen sonst bekommt er nur doofe fehlermeldungen.
4) Deine Verschlüssellungs-Modi ist ECB, dadurch haben alle gleichen Zeichen den gleichen Code, was das ganze um ein vielfaches einfacher knackbarer macht.
Um das mal mit bildern zu erklären, hier:
Symmetric-key cryptography
Im Absatz: Block cipher modes
Die Bilder vom Pinguin zeigen sehr geht das Problem von ECB.
ttt verschlüsselt mit 0 und 123456789 als Key und deinem alphabet ergibt
290:290:290
bzw.
115758720:115758720:115758720
Alles das gleiche, daher weis ich jetzt schon dass wenn ich 3 mal hintereinander X:X:X hab, es 3 mal das gleiche zeichen ist.
Dank ISO bist du auf 255 Zeichen begrenzt, wovon einige schon wegfallen weil es steuerzeichen sind, andere unwahrscheinlich sind.
Wenn man jetzt ein paar Passwörter hat kann man da mit etwas
Buchstabenhäufigkeit – Wikipedia schon eventuell das PW recht einfach knacken ohne großen aufwand.
Die naheligende vermutung, dass wohl die meisten alphabete dann aus einem begrenzten satz an zeichen bestehen (a-zA-Z0-9 + sonderzeichen) und eventuell in alphabetischer reihenfolge vorkommen vereinfachen es dann noch weiter.
5) Deine Verschlüsselung vergrößert den benötigten Speicherplatz für Passwörter mit größer werdendem Nummern-Schlüssel sehr stark
Ein Tip, überlass Kryptographie Leuten die sich damit beschäftigt haben, weil alles andere ist meiner Meinung nach nichts weiter als
Security through obscurity – Wikipedia .