Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Wie wandle ih einen Text in eine Zahl um? (https://www.delphipraxis.net/175933-wie-wandle-ih-einen-text-eine-zahl-um.html)

DelphiProgrammer 30. Jul 2013 12:31

Wie wandle ih einen Text in eine Zahl um?
 
Hallo,
Ich möchte ein Verschlüsselungsprogramm machen und jabe dazu einen text, den ich dann irgendwie in eine Zahl umwandeln will. Kein strzoint oder umgekehrt der text ist ein text und keine Zahl!!!! Also, wie bekomme ich da eine zahl raus? Es soll ein Einweg-Hash werden mit der zahl, die rauskommt werde ih dan irgendwelche rechnungen durchführen, sodass es einigermaßen sicher ist.
LG Christopher

PS: delphi version: delphi7 personal

Klaus01 30. Jul 2013 12:34

AW: Wie wandle ih einen Text in eine Zahl um?
 
.. vielleicht suchst du ord('a');
Grüße
Klaus

blawen 30. Jul 2013 13:04

AW: Wie wandle ih einen Text in eine Zahl um?
 
Zitat:

Zitat von DelphiProgrammer (Beitrag 1223020)
...der text ist ein text und keine Zahl!!!! Also, wie bekomme ich da eine zahl raus?...

Ich empfehle Dir, Dein Anliegen nochmals zu überdenken und zu überlegen, wass Du denn nun genau möchtest. Wenn ich ein Problem sauber beschreiben kann, sehe ich meist auch, wie ich es umsetzen kann.

gammatester 30. Jul 2013 13:13

AW: Wie wandle ih einen Text in eine Zahl um?
 
Wie wäre es mit dem Secure Hash Standard?:wink:

DelphiProgrammer 30. Jul 2013 13:44

AW: Wie wandle ih einen Text in eine Zahl um?
 
Also, ich habe einen string. Darin ist ein text, der verschlüsselt werden soll.
Das stelle ich mor so vor:

Den string in eine zahl umwandeln
dann mit dieser zahl eine mathemathische rechnung machen,
sodass dann eine veränderte zahl herauskommt.

Und wie kann ich eben diesen text in eine zahl umwandeln?
Hexadezimal oder dual oder so?

Klaus01 30. Jul 2013 13:49

AW: Wie wandle ih einen Text in eine Zahl um?
 
.. wie schon oben geschrieben mit ord(Buchstabe) bekommst Du den ascii Wert eines Zeichens
also eine Zahl, diese kannst Du dann mit den anderen Werten der folgenden Zeichen verarbeiten.

Wenn Du ord() nicht verwenden wills, aus welchen Gründen auch immer, kannst Du dir auch selber
eine Lookup-Tabelle erstellen.

Was Du willst ist nicht verschlüsseln, sondern einen Hash aus der Zeichekette gewinnen.

Grüße
Klaus

Back2Code 30. Jul 2013 14:25

AW: Wie wandle ih einen Text in eine Zahl um?
 
Zitat:

Zitat von DelphiProgrammer (Beitrag 1223029)
Also, ich habe einen string. Darin ist ein text, der verschlüsselt werden soll.
Das stelle ich mor so vor:

Den string in eine zahl umwandeln
dann mit dieser zahl eine mathemathische rechnung machen,
sodass dann eine veränderte zahl herauskommt.

Und wie kann ich eben diesen text in eine zahl umwandeln?
Hexadezimal oder dual oder so?

Hier such dir eine aus :

http://crypo.in.ua/tools/

Perlsau 30. Jul 2013 15:08

AW: Wie wandle ih einen Text in eine Zahl um?
 
Zitat:

Zitat von DelphiProgrammer (Beitrag 1223029)
Also, ich habe einen string. Darin ist ein text, der verschlüsselt werden soll.
Das stelle ich mor so vor:
Den string in eine zahl umwandeln
dann mit dieser zahl eine mathemathische rechnung machen,
sodass dann eine veränderte zahl herauskommt.
Und wie kann ich eben diesen text in eine zahl umwandeln?
Hexadezimal oder dual oder so?

Es gibt zahlreiche Verschlüsselungsmethoden. Was du hier angibst, ist jedoch nicht wirklich eine Verschlüsselungsmethode, sondern eine einfache Umwandlung von Buchstaben in entsprechende Zahlen. Ein String ansich ist nicht sinnvoll in eine Zahl umzuwandeln, um daraus später wieder den String zu erstellen. Du hast je 26 Groß- und Kleinbuchstaben, zwei mal drei Umlaute, das ß und zahlreiche Buchstaben mit Apostroph und ähnlichen Zeichen wie z.B. á und È usw. Wenn du jetzt einfach den Ordinalwert dieser Buchstaben zu einer Zahl zusammensetzt, z.B. 'Auto' ergäbe 65117116111, kannst du nicht wissen, ob eine Zahl aus zwei oder drei Ziffern besteht. Daher eignet sich dieser Algorithmus nicht dafür, Strings verschlüsselt zu speichern.

Eine einfache Methode wäre die sog. Cäsar-Verschlüsselung, die für einfachste Anforderungen wohl genügen mag. Ich verwende gerne den Cipher von den Jedi-Komponenten, der ist schon viel schwerer zu knacken. Natürlich kannst du auch eigene Verschlüsselungsmethoden erfinden, indem du z.B. in festgelegten Abständen gewisse Buchstaben einfügst, die beim Entschlüsseln wieder entfernt werden.

Verschlüsselung ist ein sehr komplexes und vielfältiges Thema. Gute Verschlüsselungstechnik schüttelt man nicht einfach mal so aus dem Ärmel ... :cyclops:

implementation 30. Jul 2013 15:20

AW: Wie wandle ih einen Text in eine Zahl um?
 
[OT]
Zitat:

Zitat von Perlsau (Beitrag 1223042)
und zahlreiche Buchstaben mit Apostroph

Zeig mir mal bitte 'nen Buchstaben mit Apostroph :stupid:
[/OT]

sx2008 30. Jul 2013 15:33

AW: Wie wandle ih einen Text in eine Zahl um?
 
Zitat:

Zitat von DelphiProgrammer (Beitrag 1223020)
Es soll ein Einweg-Hash werden

Dann nimm doch MD5, das ist für deine Zwecke wohl noch ausreichend sicher.
https://raw.github.com/sx2008/Delphi...MD5windows.pas
Delphi-Quellcode:
// Anwendungsbeispiel
var
  text, hash : string;
begin
  text := 'das ist irgendein Text';
  hash := MD5String(text);
  // der hash enthält 16 Bytes
Du kannst nun die 16 Bytes in einen 32 Zeichen Hexstring umwandeln.
Wenn es unbedingt eine Zahl sein soll, dann kannst du einfach auch die ersten 4 Bytes kopieren
Delphi-Quellcode:
var
  pruefzahl : integer;
...
  Move(hash[1], pruefzahl, sizeof(Integer);
Natürlich ist ein 16-Byte Hash besser als ein 4-Byte-Hash, aber für geringe Ansprüche immer noch ausreichend.

DelphiProgrammer 30. Jul 2013 15:58

AW: Wie wandle ih einen Text in eine Zahl um?
 
Super!
Ich glaub mit MD5 versuche ichs mal!
Das ist ja nur eine pascal datei oder?
Kann ich den mit d7personal installieren?
Siehe "wo kriege ich indy her, und wie installiere ich es" auch ein thema von mir
LG Christopher

Aphton 30. Jul 2013 15:59

AW: Wie wandle ih einen Text in eine Zahl um?
 
Zitat:

Zitat von Perlsau (Beitrag 1223042)
Zitat:

Zitat von DelphiProgrammer (Beitrag 1223029)
Also, ich habe einen string. Darin ist ein text, der verschlüsselt werden soll.
Das stelle ich mor so vor:
Den string in eine zahl umwandeln
dann mit dieser zahl eine mathemathische rechnung machen,
sodass dann eine veränderte zahl herauskommt.
Und wie kann ich eben diesen text in eine zahl umwandeln?
Hexadezimal oder dual oder so?

Es gibt zahlreiche Verschlüsselungsmethoden. Was du hier angibst, ist jedoch nicht wirklich eine Verschlüsselungsmethode, sondern eine einfache Umwandlung von Buchstaben in entsprechende Zahlen. Ein String ansich ist nicht sinnvoll in eine Zahl umzuwandeln, um daraus später wieder den String zu erstellen. Du hast je 26 Groß- und Kleinbuchstaben, zwei mal drei Umlaute, das ß und zahlreiche Buchstaben mit Apostroph und ähnlichen Zeichen wie z.B. á und È usw. Wenn du jetzt einfach den Ordinalwert dieser Buchstaben zu einer Zahl zusammensetzt, z.B. 'Auto' ergäbe 65117116111, kannst du nicht wissen, ob eine Zahl aus zwei oder drei Ziffern besteht. Daher eignet sich dieser Algorithmus nicht dafür, Strings verschlüsselt zu speichern.

Warte wat? Da muss ich dir leider widersprechen!
Wenn man beispiels- & einfachheitshalber von AnsiStrings ausgeht, wo jedes Zeichen (Char) genau ein Byte groß ist, dann kann man die einzelnen Bytes als Zahlen interpretieren (anstatt Zeichen), damit mathematisch Unfug treiben und dann beliebig weiter damit rumhantieren!

Hier eine einfache Xor Verschlüsslung z.B.
Delphi-Quellcode:
procedure xorCrypt(var Str: String; const XorVal: Byte);
var
  i: Integer;
begin
  for i := 1 to Length(Str) do
    Str[i] := Byte(Str[i]) xor XorVal;
end;
Vlt. bezieht sich deine Aussage auf "ord()" welche letztendlich einen Ordinalwert zurückgibt, was im Grunde auch nur eine Zahl ist (nicht?)!

Edit: "Auto" ergibt übrigens nicht 65117116111, sondern 65 117 116 111 (man weiß ganz genau, wo die Zahl aufhört und wo sie beginnt!)

Perlsau 30. Jul 2013 16:18

AW: Wie wandle ih einen Text in eine Zahl um?
 
Zitat:

Zitat von implementation (Beitrag 1223045)
[OT]
Zitat:

Zitat von Perlsau (Beitrag 1223042)
und zahlreiche Buchstaben mit Apostroph

Zeig mir mal bitte 'nen Buchstaben mit Apostroph :stupid:
[/OT]

Du hast also bemerkt, daß ich eine unzutreffenden Begriff verwendet habe. Doch statt mich zu weiteren Blamagen treiben zu wollen, könntest du auch einfach den richtigen Begriff nennen. Mir ist er im Augenblick nicht gegenwärtig.

Perlsau 30. Jul 2013 16:26

AW: Wie wandle ih einen Text in eine Zahl um?
 
Zitat:

Zitat von Aphton (Beitrag 1223052)
Edit: "Auto" ergibt übrigens nicht 65117116111, sondern 65 117 116 111 (man weiß ganz genau, wo die Zahl aufhört und wo sie beginnt!)

Wenn er aus seinem String eine Zahl machen will und nicht mehrere, dann sieht die Zahl so aus: 65117116111. Was du angibst, sind aber vier verschiedene Zahlen. Er könnte auch die einzelnen Zahlen summieren oder multiplizieren, was ihn aber auch nicht weiter brächte. Der TE schrieb nichts davon, daß er aus einem String oder Text mehrere Zahlen machen möchte, sondern wie bereits gesagt nur eine: einen text, den ich dann irgendwie in eine Zahl umwandeln will. Und das führt definitiv nicht zum gewünschten Ziel :!:

Bjoerk 30. Jul 2013 17:54

AW: Wie wandle ih einen Text in eine Zahl um?
 
Oder den DecryptText halt mit Nullen auffüllen (065117116111). Dann kann man den Text auch vor dem Entschlüsseln auf Konsistenz prüfen (Length(S) mod 3 muß Null sein).


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:34 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz