Richard2: Idee gesucht: Verschlüsselung/Maskierung einer Zahl

Hi,

ich möchte gerne eine 4ziffrige Zahl maskieren. Sicherheitsaspekt spielt hierbei gar keine Rolle, es geht nur darum, sie zu maskieren.
Wenn bei den fortlaufenden Zahlen auch in dem maskierten String ein fortlaufendes System wäre, wärs besonders schön.
Außerdem wäre es günstig, wenn der maskierte String nicht allzuviel länger wäre als die 4ziffrige Ursprungszahl.

Na, hat einer eine Idee hierzu?

Gespannt, Richard

  1. moin,

    ich möchte gerne eine 4ziffrige Zahl maskieren. Sicherheitsaspekt spielt hierbei gar keine Rolle, es geht nur darum, sie zu maskieren.

    Dass eine Maskierung keine Verschlüsselung ist, ist klar oder?

    Wenn bei den fortlaufenden Zahlen auch in dem maskierten String ein fortlaufendes System wäre, wärs besonders schön.

    geht.

    Außerdem wäre es günstig, wenn der maskierte String nicht allzuviel länger wäre als die 4ziffrige Ursprungszahl.

    Er wird auf jeden Fall länger, nämlich um den Betrag des Maskierungszeichens.

    Na, hat einer eine Idee hierzu?

    Zum Maskieren ist das Prozentzeichen weit verbreitet. Nimm es so wie Du es brauchst, entweder so:

    %1234

    oder so

    %1%2%3%4

    Ersteres ist besser zu machen, Du behältst die 4 Ziffern, kannst auch mal optisch kontrollieren, kannst das gut erzeugen und auch gut parsen.:

    Expression   %([0-9]{4})

    Hotti

  2. Wenns nur drum geht irgendwas zu ersetzen, mach aus 1 ein a, aus 2 ein b ...
    Oder sieh die Buchstaben als Zahlensystem zur Basis 26 (oder mit Groß/Kleinschreibung zur Basis 52), dann kannst du einen String mit nur 3 Zeichen draus machen.
    Aber mir sagt deine Frage irgendwie gar nichts, was meinst du mit maskieren?
    Und was ist das Ziel dabei, also wozu?

    1. Hallo,

      Wenns nur drum geht irgendwas zu ersetzen, mach aus 1 ein a, aus 2 ein b ...

      Nein, so einfach will ich es mir nicht machen. Und auch dem nicht, der den String zu sehen bekommt.

      Aber mir sagt deine Frage irgendwie gar nichts, was meinst du mit maskieren?
      Und was ist das Ziel dabei, also wozu?

      Na, eigentlich meine ich schon verschlüsseln. Da ich aber weiß, wie penibel hier mit dem Begriff "verschlüsseln" umgegangen wird, nenne ich es mal "maskieren".
      Heißt also, wenn jemand die Ursprungszahl ermitteln kann, ok, dann ists eben so. Ziel ist aber, dass das System eben nicht von Karl-Otto Dumpfbacke schon erkannt wird. Also wenn schon, soll es etwas Gehirnschmalz voraussetzen. Am liebesten soll es Karl-Otto gar nicht ermitteln können.

      Es darf aber in keinem Fall eine One-Way-Verschlüsselung sein, die wäre für meinen Zweck unbrauchbar.

      Und wozu das alles? Es geht lediglich darum, dass aus der 4ziffrigen Zahl bei Vorhandensein mehrerer dieser Zahlen Rückschlüsse gezogen werden können. Das möchte ich verhindern.

      VG, Richard

      1. Hallo,

        Aber mir sagt deine Frage irgendwie gar nichts, was meinst du mit maskieren?
        Und was ist das Ziel dabei, also wozu?

        Na, eigentlich meine ich schon verschlüsseln. Da ich aber weiß, wie penibel hier mit dem Begriff "verschlüsseln" umgegangen wird, nenne ich es mal "maskieren".

        nenn' es nicht "Maskieren", wenn Du "Verschlüsseln" meinst. Auch Caesar-Verschlüsselung (mit einem speziellen Schlüssel auch als ROT13 bekannt) ist eine Verschlüsselung. Keine besonders gute.

        Heißt also, wenn jemand die Ursprungszahl ermitteln kann, ok, dann ists eben so. Ziel ist aber, dass das System eben nicht von Karl-Otto Dumpfbacke schon erkannt wird. Also wenn schon, soll es etwas Gehirnschmalz voraussetzen. Am liebesten soll es Karl-Otto gar nicht ermitteln können.

        Wenn Karl-Otto es nicht ermitteln können soll, dann nimm die beste Verschlüsselung, die Dir zur Verfügung steht. Bibliotheken mit AES und Co. gibt es für so ziemlich jede Programmiersprache.

        Möchtest Du aus der Chiffre sofort auf den Klartext schließen können (weil nur Du das Verfahren und den Schlüssel kennst), so kannst Du nur eine sehr einfache, leicht zu brechende Verschlüsselung verwenden. Security by obscurity doesn't work :-)

        Freundliche Grüße

        Vinzenz

        1. Möchtest Du aus der Chiffre sofort auf den Klartext schließen können (weil nur Du das Verfahren und den Schlüssel kennst), so kannst Du nur eine sehr einfache, leicht zu brechende Verschlüsselung verwenden. Security by obscurity doesn't work :-)

          Es ist sicherheitstechnisch ziemlich uninteressant.
          So, wie ein Zelt, bei dem Du den Reißverschluss zumachst.

          Nicht sicher, aber erstmal doch zu.

          Grüße, Richard

      2. Hallo Richard,

        Na, eigentlich meine ich schon verschlüsseln. Da ich aber weiß, wie penibel hier mit dem Begriff "verschlüsseln" umgegangen wird, nenne ich es mal "maskieren".
        Heißt also, wenn jemand die Ursprungszahl ermitteln kann, ok, dann ists eben so. Ziel ist aber, dass das System eben nicht von Karl-Otto Dumpfbacke schon erkannt wird.

        wie wäre es mit einer Base64 Kodierung? So würde aus 1234 -> MTIzNA== wenn du jetzt noch 001234 (MDAxMjM0) nimmst verschwinden auch noch die verräterischen == am Ende des Strings.

        Grüße,

        Jochen

        --
        Kritzeln statt texten: Scribbleboard
      3. Hallo,

        Heißt also, wenn jemand die Ursprungszahl ermitteln kann, ok, dann ists eben so. Ziel ist aber, dass das System eben nicht von Karl-Otto Dumpfbacke schon erkannt wird. Also wenn schon, soll es etwas Gehirnschmalz voraussetzen. Am liebesten soll es Karl-Otto gar nicht ermitteln können.

        Nimm z.B. diese verschlüssleten Zahlen:

        9876
        7552

        Kannst du die beiden 4stelligen Ursprungszahlen ermitteln, Karl-Otto? ;)
        Vermutlich nicht. Willst du wissen wie's gemacht wird?

        Gruß, Don P

        1. Nimm z.B. diese verschlüssleten Zahlen:

          9876
          7552

          Kannst du die beiden 4stelligen Ursprungszahlen ermitteln, Karl-Otto? ;)
          Vermutlich nicht. Willst du wissen wie's gemacht wird?

          Hi,

          Bei 2 Zahlen ist das ja auch schlicht unmöglich. Man könnte es max. erraten, mehr nicht.

          Aber gib mir mal die verschlüsselten Zahlen von 3 aufeinderfolgenden Urspruchszahlen. Dann kann ich Dir sagen, ob das System für meine Zwecke brauchbar ist.

          Auf jeden Fall das erste System hier im Thread, dass ich interessant finde.

          Grüße, Richard

          1. Hallo,

            Rechne doch einfach in ein anderes Zahlensystem um, etwa zur Basis 9 statt 10 und spiegle dann noch das Ergebnis, oder sowas. Das ist für Karl-Otto auf jeden Fall zu schwer und deine Zahlen werden auch nicht wesentlich länger.

            Gruß, Don P

            1. Hallo,

              Rechne doch einfach in ein anderes Zahlensystem um, etwa zur Basis 9 statt 10 und spiegle dann noch das Ergebnis, oder sowas. Das ist für Karl-Otto auf jeden Fall zu schwer und deine Zahlen werden auch nicht wesentlich länger.

              Das ist für Karl-Otto auf jeden Fall zu schwer *g*
              Aber ganz ehrlich? Eine Funktion hierfür schreiben find ich vergleichsweise einfach, aber später im Kopf krieg ichs dann auch nicht auch nicht mehr auf Anhieb "entschlüsselt".

              Was war mit Deinen beiden Zahlen?

              Grüße, Richard

              1. Hallo,

                Aber ganz ehrlich? Eine Funktion hierfür schreiben find ich vergleichsweise einfach, aber später im Kopf krieg ichs dann auch nicht auch nicht mehr auf Anhieb "entschlüsselt".

                Du willst es im Kopf entschlüsseln können? Das musste aber auch dazusagen!
                Base64 taugt dafür ja auch nicht.

                Für meine beiden Zahlen hab' ich einfach zu jeder Ziffer 5 addiert, die eventuelle Zehnerstelle ignoriert und die resultierende 4stellige Zahl am Ende gespiegelt, d.h. die letzte Ziffer vorne usw. Da dürfte so schnell keiner dahintersteigen. Aber *sicher* wäre anders.

                Gruß, Don P

      4. Du sagtest aber dass du möglichst auch ein fortlaufendes System in den Zahlen haben willst. Das passt nicht ganz damit zusammen dass man nichts mehr erkennen soll.

        Und wozu das alles? Es geht lediglich darum, dass aus der 4ziffrigen Zahl bei Vorhandensein mehrerer dieser Zahlen Rückschlüsse gezogen werden können. Das möchte ich verhindern.

        Heißt das du willst eine Zahl in mehreren Varianten abbilden? Dürfens auch mehr Stellen werden als 4?

        1. Heißt das du willst eine Zahl in mehreren Varianten abbilden? Dürfens auch mehr Stellen werden als 4?

          1. Nein.
          2. Ja :-)

          Grüße, Richard

  3. Ich schätze unter all den Vorschlägen ist für deinen Zweck am Ehesten geeignet eine andere Basis zu verwenden. Hex ist in den meisten Sprachen bereits implementiert, könnte Karl-Otto aber bekannt sein. Also machst du einfach ein System zur Basis 12 oder 13 oder so und schon kann man die Zahl nicht mehr erkennen. Wer allerdings 20 oder 30 Zahlen hat und wenn die noch aufeinander folgen, dann könnte man sehr schnell drauf kommen.

    Zweiter Vorschlag: Jemand schrieb was von 1=a 2=b 3=c und so fort. Entwickle daraus doch einfach eine Tabelle, die sehr ungleichmäßig ist (sie ist dein Schlüssel). Etwa so:
    1=a,f,k,l,m,x,z
    2=c,d,e,i,n,o,q,t
    3=b,g,h,p,y
    4=j
    5=...
    und so fort. Ver- und Entschlüsseln extrem simpel (auch im Kopf wenn einem die Tabelle vorliegt), aber nicht sooo einfach zu erkennen, weil die gleiche Zahl in unterschiedlichen Darstellungen möglich ist.
    Wenn du es noch leichter im Kopf machen willst muss die Tabelle einfach nur gleichmäßiger werden:
    1=a
    2=b-f
    3=g-k
    etc.
    dann musst du dir nur die Grenzen merken.

    --
    sh:( fo:| ch:? rl:( br:& n4:& ie:{ mo:} va:) de:µ_de:] zu:) fl:( ss:| ls:[ js:(
    1. Hallo,

      Zweiter Vorschlag: Jemand schrieb was von 1=a 2=b 3=c und so fort. [...]
      Wenn du es noch leichter im Kopf machen willst muss die Tabelle einfach nur gleichmäßiger werden:
      1=a
      2=b-f
      3=g-k
      etc.
      dann musst du dir nur die Grenzen merken.

      nicht einmal das, wenn man die Grenzen so wählt, wie die Buchstaben auf einer typischen Telefontastatur den Ziffern zugeordnet sind. Für die 0 und die 1, denen ja keine Buchstaben zugeordnet sind, könnte man Umlaute (0)oder bestimmte Interpunktionszeichen (1) wählen.

      Das ist zwar für jemanden, der das Prinzip erkannt hat, auch sehr einfach zu entschlüsseln (notfalls mit Blick aufs Handy), aber das zugrundeliegende Prinzip erschließt sich einem nicht unbedingt, wenn man Codes wie öt$j (=0815) oder jwäevz (=590389) sieht.

      So long,
       Martin

      --
      Eine Nonne kommt in den Himmel. An der Pforte fragt Petrus: "Wer bist du?" - "Ich bin die Braut Jesu." Petrus stutzt einen Moment, ruft dann nach hinten: "He Freunde, habt ihr schon gehört? Der Juniorchef will heiraten!"
      1. nicht einmal das, wenn man die Grenzen so wählt, wie die Buchstaben auf einer typischen Telefontastatur den Ziffern zugeordnet sind. Für die 0 und die 1, denen ja keine Buchstaben zugeordnet sind, könnte man Umlaute (0)oder bestimmte Interpunktionszeichen (1) wählen.

        Auch ne Möglichkeit oder als ich deinen Vorschlag gerade las kam mir die Idee das mit der Tastatur zu machen:
        1=qay
        2=wsx
        3=edc
        4=rfv
        5=tgb
        6=zhn
        7=ujm
        8=ik
        9=ol
        0=p(ö)
        Sonderzeichen etc. habe ich jetzt mal weggelassen, damit es leichter auf diversen Wegen übertragbar, speicherbar etc. ist. Mit plain-text kommen die meisten Verbindungen etc. nämlich gut klar (url-Parameter, shell-scripte, ...)
        Auch hier: Tastatur liegt vor: Leicht zu entschlüsseln. Kann man hintenrum auch wieder erschweren (z.B. indem man einen Versatz einbaut oder keine QWERTZ nimmt oder so).

        Also man sieht: Diese erm "asynchrone Verschlüsselung" ist der falsche Ausdruck... naja eine Verschlüsselung in der unterschiedliche Resultate aus dem gleichen Quellwert heraus kommen ist durchaus ausbaufähig (führt aber ganz klar zu großer Unsicherheit, wenn man mal mehrere Ergebnisse der gleichen Ursprungswertes erstellt lässt sich das wohl schnell knacken).

        --
        sh:( fo:| ch:? rl:( br:& n4:& ie:{ mo:} va:) de:µ_de:] zu:) fl:( ss:| ls:[ js:(