Zahlen "aufblasen" < Algor.+Datenstr. < Theoretische Inform. < Hochschule < Informatik < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 18:44 Mi 18.10.2006 | Autor: | LL0rd |
Hallo,
ich habe eine durchgehend Reihe von Zahlen, die mit 1 beginnt und mit 9999999 endet. Diese Reihe von Zahlen ist geheim. Daher sollten die Zahlen künstlich zu ca. 20 Stelligen Zahlen aufgeblasen werden, auf die man später eindeutig Rückschluss auf die Ursprüngliche Zahl schließen kann.
Eine zweite Sicherheitsmaßnahme soll verhindern, dass man herausfinden kann, ob eine Zahl kleiner oder größer ist. Aus diesem Grund sollten die resultierenden Zahlen kreuz und quer liegen.
Ich hoffe, mir kann jemand helfen, dieses Problem zu lösen.
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
|
|
|
|
Status: |
(Antwort) fehlerhaft | Datum: | 08:12 Fr 20.10.2006 | Autor: | Leader |
Hallo!
Es ist nicht ganz einfach, Zahlen so zu konvertieren, dass man nicht mehr erkennt, welche Zahl größer ist als eine andere. Das geht weder beim Additions-, noch beim Positionssystem. Man muss daher einen kleinen Umweg gehen.
Also, ich empfehle dir:
1. Konvertiere deine Zahlen in ein anderes Zahlensystem, meinetwegen die Basis 18 (die Ziffern 10 bis 18 ersetzt du dann wie beim Hexadezimalsystem durch Buchstaben A, B, ..., I).
2. Jetzt nimmst du zwei Strings, einen Anfangstring und einen Endstring. Diese Strings bestehen jeweils aus, sagen wir mal, 8 Zeichen. Ein Zufallgenerator weißt den Strings nun zufällige Zeichen 0 bis J zu. Jetzt wird der Anfangsstring vor die konvertierte Zahl geschrieben und der Endstring dahinter.
Ein Beispiel:
BJ30AC8787B5A75C9D06
Die Zahl würde jetzt lauten: 87B5 im 18er Zahlensystem, das heißt, hier wäre jetzt die Dezimalzahl 49145 verschlüsselt wurden.
Dein Decodierungsprogramm muss dann "wissen": Beim Umwandeln der Zahl sind die ersten 8 Zeichen und die letzten 8 Zeichen nicht Bestandteil der verschlüsselten Zahl.
Etwas umständlich, aber ziemlich sicher.
Freundliche Grüße,
Leader.
|
|
|
|
|
Status: |
(Korrektur) Korrekturmitteilung | Datum: | 05:09 So 22.10.2006 | Autor: | LL0rd |
Hi,
ich habe diesen Workaround gelesen und muss sagen, dass (sorry, wenn das jetzt hart klingt) er wirklich schlecht ist. So etwas kann sogar von kleinen Scriptkiddies geknackt werden.
Vorgehensweise ist folgende:
Man ruft 4-5Mal hintereinander die "Verschlüsselung" auf. Da die Random Werte nicht gespeichert werden, ist der Teil des Strings dynamisch. Der andere ist dagegen statisch. Es ist dann auch egal, was ich für ein Basissystem verwende, mit einer erhöhung um eins ist man wieder beim nächsten eintrag.
Ein weiteres Problem ist, dass z.B. 1 auch in einem 18er Basissystem immer noch 1 ist, also einstellig!!! Man hat also immer unterschiedliche Längen eines Strings. Okay, man könnte jetzt sagen, man füllt das ganze Zeugs mit Nullen auf. 99999999 haben im 18er Basissystem 6-7 Stellen (geschätzt). Mal so eine Frage: Würden dir 5-6 aufeinander folgende Nullen nicht auffallen??
|
|
|
|