Frage

Die Frage ist für jedes modernes unmanaged language.C-ähnliche Sprachen, delphi, alles.

Ich mag meinen eigenen Verschlüsselungsalgorithmus schaffen, die, im Gegensatz zu anderen, die Länge des verschlüsselten String ab.

Mein erster Gedanke war mein eigene Numberic System ähnlich zu hexadicimal zu schaffen, aber mit mehr characters.For Beispiel [0..9] + [A..Z] .Das eine Zahl bis zu 40 in einen einstelligen Wert machen würde. ich könnte auch andere Ziffern addieren wie '!,. /?) (#!' und so weiter.

Meine Frage ist, wie solche Numberic System von A bis Z implementieren inculding 0 bis 9.Do Ich habe jeden einzelnen Wert als konstant bis zu 0xZZZZZZZZ erklären? das wäre mein Leben schrecklich

machen

Bitte geben Sie mir Ihre Anregungen, Beispiele. :)

War es hilfreich?

Lösung

Lassen Sie uns darüber nachdenken.

Jede Basis 40 Zeichen nimmt 8 Bit. Es kodiert für eine Zahl von 0 bis 39, die als von 5 Bits von aktuellen Informationen nur ein Haar mehr ist.

Ein einzelne Byte 256 verschiedene Werte darstellen. Eine Basis 40-Codierung stellt nur 40 unterschiedliche Werte in demselben Byte.

Dies scheint ein Netz Verlust von 2-3 Bits pro Byte codiert werden.

Having said that, eine Basis 40 Wert ist eine Zeichenfolge, und nichts mehr. Keine Lust Datenbank Anmeldung erforderlich ist -. Es ist nur eine Zeichenfolge

Sie schreiben zwei Funktionen -. ToBase40 (Somebytes) und ToBytes (someBase40string) Ihre base40-Strings zu normalen Zeichenfolge konvertieren

Wenn Sie eine gut gemachte bestehende Lösung wollen, Forschung base64 .

Andere Tipps

Sie müssen Art und Weise, wie Computer und Speicherwerken ändern.

Es gibt keinen freien Speicher und es gibt keinen Weg, um Platz für frei zu bekommen. Zahlensystem ändern würde Ihnen mehr Platz geben, wenn Sie es auf dem Papier schreiben, aber in einem Computerspeicher, müssen Sie noch gleiche Menge an Bits.

Beachten Sie auch, dass, wenn Sie etwas verschlüsseln möchten, dass der Betrieb verhindert auch eine sinnvolle Kompression da verschlüsselten Inhalt so nah wie möglich zu zufällig sein muss.

In der Regel irgendeine Form Komprimierung vor der Verschlüsselung (GZIP oder so ähnlich) getan, aber das funktioniert nicht durch Zahlensysteme zu ändern.

P. S. Verwenden Sie einigen bewährten Verschlüsselungsalgorithmus.

Typischerweise ist die Art und Weise Verschlüsselungsalgorithmen die Größe des verschlüsselten Textes zu reduzieren, ist den Text durch einen Allzweck-Kompressionsalgorithmus zuerst laufen, dann verschlüsselt das komprimierte Ergebnis. Sie werden fast immer ein besseres Ergebnis auf diese Weise erhalten, als zu versuchen, die beiden Algorithmen zu einem kombinieren.

Die Leute, die Verschlüsselungsalgorithmen verbracht haben wahrscheinlich Millionen von Arbeitsstunden entwickelt haben, Jahre in grad Schule und PostDocs ihr Know-how zu erhalten. Was macht Sie glauben, Sie kommen mit etwas besser?

Sie werden wahrscheinlich mit einem unsicheren Algorithmus kommen.

Verwenden Sie einen vorhandenen Algorithmus und Verwendung Kompression.

würde ich empfehlen, einfach die Eingabe Komprimieren (mit gzip, zlib, oder was auch immer), bevor sie verschlüsselt werden. Das ist einfacher und sicherer als Ihren eigenen Algorithmus zu schaffen. (GnuPG tut dies, zum Beispiel.)

Base64-Strings sind in vielen Computersprachen gemeinsam und es ist ziemlich Standard. Es verwendet die folgenden Zeichen:

  

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 + /

Siehe http://en.wikipedia.org/wiki/Base64 für weitere Informationen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top