Sven Rautenberg: mySQL-Fulltext mit base-64 überlisten - gute Idee?

Beitrag lesen

Moin!

Sup!

Die müßten natürlich extra eingesetzt werden. Nach meinen Tests vermute ich, daß base64 für ein Leerzeichen immer g schreibt, bin mir aber nicht sicher.

Ich denke, da Base64 8 Bit-Folgen in 7-Bit-Folgen kodiert, wird wohl kaum immer ein g rauskommen bei einem Leerzeichen...

Base674 codiert eine 24-Bit-Folge (3 Byte) in 6-Bit-Happen in eine 4-Zeichen-Folge (4 Byte) mit je 6 Bits pro Zeichen.

Die zur Codierung von je 6 Bits verwendeten Zeichen sind in dieser Tabelle http://media.it.kth.se/SONAH/ANALYSYS/acts/sonah/guide/mm_mail/mmm31.htm zu finden.

Dort ist nachzulesen, dass die 32 (der ASCII-Wert für das Leerzeichen) mit "g" übersetzt wird. Dies gilt allerdings nur für das ERSTE Leerzeichen einer Folge. Denn beim zweiten Leerzeichen passen die gewählten 6 Bits ja nicht mehr, sondern es wird byteübergreifend gruppiert.

00100000 = 0x20 = 32

00100000 00100000 00100000 = drei Leerzeichen.

Von Links nach rechts werden 6-Bit-Gruppen gebildet:
001000 000010 000000 100000

Die Übersetzung gemäß Tabelle:
G C A g

Mag sein, dass der Vorgang nicht mit dem MSB, sondern mit dem LSB beginnt, aber das Prinzip dürfte klar geworden sein: Drei Leerzeichen hintereinander sind keinesfalls immer derselbe Buchstabe in Base64.

- Sven Rautenberg