Verschlüsselung
-
Guten Tag
Ich möchte die Werte und ein Passwort, welche in einem Editfeld eingegeben werden verschlüsselt in einer MySQL Datenbank ablegen.
Ich habe da schon was von md5 gehört, aber das war damals bei PHP..
Bei googel habe ich leider nicht viel hilfreiches gefunden mit Verschlüsselungen bei Borland..
Könnt ihr mir einmal die verschiedenen Möglichkeiten aufzeigen und evtl die Vor- und Nachteile. Muss sicher nicht die komplizierteste sein, aber sicher sollte die schon sein..
Besten Dank
-
md5 ist keine Verschlüsselung, sondern ein Hashverfahren
Könnt ihr mir einmal die verschiedenen Möglichkeiten aufzeigen und evtl die Vor- und Nachteile. Muss sicher nicht die komplizierteste sein, aber sicher sollte die schon sein..
Da könnte Wikipedia weiterhelfen und auch google nach "rot13"
-
-
Also für Passwörter abspeichern würde ich Hash-Werte (md5 usw.) nehmen dabei brauchst du nicht wissen wie die erzeugt werden das macht MySql für dich schau mal hier
http://dev.mysql.com/doc/refman/5.0/en/encryption-functions.html
-
Wenn er die Passwörter verschlüsselt abspeichern will (so die Anforderung), nützt MD5 nichts.
MD5 ist ein Hashverfahren. Bei diesem wird über das Passwort eine Prüfsumme erzeugt. Diese kann gespeichert werden. Gibt nun jemand ein Passwort ein, so kann dann auch wieder eine Prüfsumme errechnet werden. Stimmen die dann überein, so wird wohl das Passwort ok sein. Man kann aber nicht - und dass ist der entscheidene Unterschied - aus der Prüfsummer das Passwort ermitteln.
Im Gegensatz zu einer Verschlüsselung - wie auch immer - wird das Passwort verschlüsselt und gespeichert. Gibt jemand ein Passwort ein, kann man es entschlüsseln und dann vergleichen. Man kann aus dem Verschlüsseltem das Originalpasswort ermitteln
-
Hallo
Höchstwahrscheinlich meint simons mit Verschlüsseln genau das was Hashes bieten.
bis bald
akari
-
ich denke christian hat es so verstanden wie ich es meinte..
ich will einfach int werte und das pw verschlüsselt in der db ablegen und anschliessen entschlüsselt in dem programm ausgeben.
so wie ich das nun verstanden habe muss ich mich nach ROT13 umschauen? Hat jemand gerade eine gute Seite für Borland? Das was ich gefunden habe ist nicht wirklich für den Borland C++ Builder geeignet..
-
Hallo
hier sind zum Beispiel Prinzip und Implementationen für ROT13 zu finden.
Aber bedenke das ROT13 eine wirklich sehr einfacher Kodierung ist.
Und ob du wirklich ein symmetrisches Verfahren willst.bis bald
akari
-
Hallo,
Hier findet man nützliche Komponenten zur Verschlüsselung und Hashbildung
http://www.cityinthesky.co.uk/cryptography.html
-
besten dank erstmal. habe mir das mal ein bisschen angeschaut.
bin nun auf folgendes resultat mit root 47 gekommen:
for(stringstelle = 1; stringstelle < enter_len; stringstelle++) { // Wenn der Ascii-Wert kleiner als 80 ist + 47 zählen if(text[stringstelle] < 80) { // Alter String in einen neuen schreiben newtext[stringstelle] = text[stringstelle] + 47; } else { // Wenn der Wert nun grösser als 126 ist, eifach differenz Wert von 33 erhöhen newtext[stringstelle] = 33 + (-127 + text[stringstelle] + 47); } }
nun zu meiner frage. wie kann ich diesen teil text[stringstelle] in einen int wandeln? sprich einfach sting in ascii-dezimal..
-
Hallo
bin nun auf folgendes resultat mit root 47 gekommen:
Das soll wohl eher ROT 47 heißen, für Rotation.
wie kann ich diesen teil text[stringstelle] in einen int wandeln?
int ascii = text[stringstelle];
bis bald
akari
-
besten dank. das funktioniert erstmal.ja wollte eigentlich rot47 schreiben..
// Stringstellen (ASCII Dezimal) um 47 erhöhen for(stringstelle = 1; stringstelle < enter_len; stringstelle++) { // Wenn der Ascii-Wert kleiner als 80 ist + 47 zählen if(text[stringstelle] < 80) { // Alter String in einen neuen schreiben ascii = text[stringstelle]; newtext[stringstelle] = ascii + 47; } else { // Wenn der Wert nun grösser als 126 ist, eifach differenz Wert von 33 erhöhen ascii = text[stringstelle]; newtext[stringstelle] = 33 + (-127 + ascii + 47); } }
Wie kann ich nun den Int-Wert in einen ASCII-Wert wandeln? IntToStr()geht ja mal logischerweise nicht.. Eine Funktion um Int to ASCII zu wandeln, habe ich irgendwie auch nicht gefunden. Gibt es da eine Möglichkeit?
-
Hallo
Was ist für dich den ein "ASCII-Wert"? Doch wohl offensichtlich eine ganze Zahl. Und Zahlen werden in ints gespeichert. Also brauchst du keine Umwandlung von int nach "ASCII"bis bald
akari
-
naja ich will ja dann den Int-Wert in einen String wandeln. Sprich nach der ASCII-Tabelle gäbe ja dann 90 -> Z
habe mich wohl falsch ausgedrückt.
sprich ascii + 47 geben einen wert zusammen. eben z.b 90 und nun muss ich irgendwie aus 90 den String Z rausbekommen.
newtext[stringstelle] = ascii + 47;
hoffe ist nun verständlich genug geschrieben.
-
Hallo
newtext[stringstelle] = ascii + 47;
und was hindert dich, genau das einmal auszuprobieren?
bis bald
akari
-
akari schrieb:
Hallo
newtext[stringstelle] = ascii + 47;
und was hindert dich, genau das einmal auszuprobieren?
bis bald
akarihm, da kommt bei mir eine Fehlermeldung.. Exception in der Klasse ERangeError.. Meldung: ". Prozess wurde angehalten....
-
Hallo
das ist also ein Laufzeit-Fehler.
Und die besagt das dein stringstelle außerhalb des gültigen Bereichs ist, der von 1 bis newtext.Length() geht. Also setzte deinen Debugger ein und finde den Grund dafür.
Mit der Umwandlung an sich hat das nichts zu tun.bis bald
akari
-
String Tfrmmain::func_readstring(String text, int rotart) { unsigned int stringstelle; unsigned int string_len; unsigned int ascii; String newtext; string_len = text.Length(); if(rotart == 47) { // Stringstellen (ASCII Dezimal) um 47 erhöhen for(stringstelle = 1; stringstelle < string_len; stringstelle++) { // Wenn der Ascii-Wert kleiner als 80 ist + 47 zählen if(text[stringstelle] < 80) { // Alter String in einen neuen schreiben ascii = text[stringstelle]; newtext[stringstelle] = ascii + 47; } else { // Wenn der Wert nun grösser als 126 ist, eifach differenz Wert von 33 erhöhen ascii = text[stringstelle]; newtext[stringstelle] = 33 + (-127 + ascii + 47); } } } else if(rotart == 5) { // } }
das ist mal mein Code. Also sobald ich das:
newtext[stringstelle] = ascii + 47;
durch dieses hier
text[stringstelle] = ascii + 47;
ersetze dann funktionier das ganze..Wie kann den das sein? newtext ist ein String und text ist auch ein String.. Sehe den Fehler oder das Problem überhaupt nicht..
-
Hallo
ja beide sind vom Typ String. Aber im Gegensatz zu text ist newtext leer. Das heißt die Länge von newtext ist 0.
Am einfachsten ist es wenn du am Anfang einfach den Inhalt und damit auch die Länge kopierst.String newtext = text;
bis bald
akari
-
ok besten dank. funktioniert nun bestens so.
für andere: hatte noch ein fehler in der for-Anweisung
for(stringstelle = 1; stringstelle < string_len + 1; stringstelle++)