Umwandlung [gelöst]

Verschiedenes zu Qt
Antworten
Qt-nator
Beiträge: 153
Registriert: 18. Dezember 2007 10:31

Umwandlung [gelöst]

Beitrag von Qt-nator »

Hi,

wie kann ich denn aus so einem

QString "Ø%¨%IêE&)Ív©*ýýýý««««««««îþîþ"

eine Zahl und am besten eine Hexadezimal Zahl machen?
Zuletzt geändert von Qt-nator am 16. Juli 2008 15:47, insgesamt 1-mal geändert.
chrootdev
Beiträge: 70
Registriert: 18. April 2008 17:52

Beitrag von chrootdev »

Du fragst jetzt schon zum 3. mal das gleiche! Wie wärs wenn du wirklich mal die doku lesen würdest, anstatt immer nur zu fragen?

Abgesehen davon wie du auf die idee kommst aus sowas "Ø%¨%IêE&)Ív©*ýýýý««««««««îþîþ" eine zahl zu machen, solltest du event. das hier lesen: http://doc.trolltech.com/4.4/qstring.html!
Qt-nator
Beiträge: 153
Registriert: 18. Dezember 2007 10:31

Beitrag von Qt-nator »

So ein schmarn ich hab gefragt wie ich eine Zahl in einen String kriege.

ging ja dann so:

Code: Alles auswählen

unsigned int nCurrentTime = QDateTime::currentDateTime().toTime_t();

QString strCurrentTime = QString::number(nCurrentTime,10);
Aber jetzt möchte ich einen String der sehr komisch ist in eine Zahl umwandeln. Und hex nicht int. Das doch jetzt was ganz anderes.

Code: Alles auswählen

    for( size_t i = 0; i < length; ++i ) {

        std::cout << "0x";
        std::cout.width( 2 );
        std::cout.fill( '0' );
        std::cout << std::hex << ( static_cast< int >( data[ i ] ) & 0x0ff ) << " ";
    }

So geht das irgendwie nur ist das nicht mein Code und ich versteh ihn nicht so ganz, auserdem nehm ich ja QString her.
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Wenn du uns sagst, was der Kauderwelsch für eine Zahl darstellen soll und warum, kann man dir vielleicht eher helfen.
Qt-nator
Beiträge: 153
Registriert: 18. Dezember 2007 10:31

Beitrag von Qt-nator »

Also,

ich hab mir diesen AES Code geholt:

http://www.c-plusplus.de/forum/viewtopi ... -is-0.html

und Für mich umgeschrieben.

Aber ums zu Verdeutlichen Poste ich mal die Ausgabe von dem:

//

Bitte geben Sie den zu verschluesselnden Text ein:
Hallo Welt
Bitte geben Sie ein Passwort ein: 12345


Unverschluesselter Text: "Hallo Welt"
Unverschluesselte Daten: 0x48 0x61 0x6c 0x6c 0x6f 0x20 0x57 0x65 0x6c 0x7
4

Verschluesselung...

Verschluesselte Daten: 0x97 0x66 0xd0 0xf5 0x94 0x2a 0xe9 0x6f 0x72 0xb
5 0x7a 0x81 0x5d 0x61 0xf3 0x3b

ùf╨⌡ö*Θor╡zü]a≤;²²²²½½½½½½½½ε■ε■

Entschluesselung...

Entschluesselte Daten: 0x48 0x61 0x6c 0x6c 0x6f 0x20 0x57 0x65 0x6c 0x7
4
Entschluesselter Text: Hallo Welt

//

ùf╨⌡ö*Θor╡zü]a≤;²²²²½½½½½½½½ε■ε■ Das entsteht bei der Verschlüsselung also dieser "komische" String. dann ist da ne Schleife die daraus Hex Teile macht die versteh ich aber nicht so ganz. Genau und ich mach das jetzt so ich nehme mir die WinID und das wird das PW in dem fall 12345 und Hallo Welt ist bei mir die UNIXTIME ja.

also eine 10 Stellige Zahl die verschlüsselt wird. Ich habs soweit gebracht das ich das so Umgeschrieben habe das Ich meine Zahl als String eingeben kann und auch wieder rausbekomme. Wenn ich direkt auf einen Wert gehe.

Also String -> Encode -> VString -> Decode. Dann bekomme ich alles gut wieder raus.

Nur will ich jetzt den Verschlüsselten String irgendwo wegeschreiben und später auslesen und wieder entschlüssen. Dachte an Registry nur die nimmt diese dummen Zeichen nicht, deswegen kann ichs ja dann auch nicht mehr Rückgänig machen.

Da liegt mein Problem ich muss diesen "Kauderwelsch" so hin und herwandeln können das ich ihn in die registry schreibne kann und wieder zurück zu dem "Kauderwelsch" wandeln kann.
Sephral
Beiträge: 201
Registriert: 1. Februar 2006 09:40
Kontaktdaten:

Beitrag von Sephral »

Hallo,
mit QSettings solltest du eigentlich sogar in der Lage sein den "Kauderwelsch"in die Registry zu schreiben, was genau klappt denn dabei nicht?

Alternativ kannst Du so die Sonderzeichen los werden:

Code: Alles auswählen

QByteArray QByteArray::toBase64 () const 
QByteArray QByteArray::fromBase64 ( const QByteArray & base64 )
Base64 kann man notfalls auch als "Verschlüsselung für arme" verwenden :-). So wie es aussieht willst du in Deine Anwendung eine Art Demomodus mit gewisser Laufzeit einbauen?

Falls es sich um ein kommerzielles Projekt handelt, würde ich Dir eher zu etwas ausgereifteren Sicherungsmechanismen wie z.B. "Wibukey" oder "Codemeter" raten (kostet halt bisserl was). Das nur mal als kleine Anregung.


Ciao,
Sephral
Qt-nator
Beiträge: 153
Registriert: 18. Dezember 2007 10:31

Beitrag von Qt-nator »

Vielen dank das hat mir sehr weiter geholfen.

So kann ichs gut hin und her wandeln und der "Kauderwelsch" bleibt erhalten.

Das problem beim Kauderwelsch in der Registry war das die nicht alle Zeichen hatte und halt manchmal dieses viereck für unbekanntes Zeichen hingemacht hat und dann konnte ichs nicht mehr auslesen.

Und in der Tat hast du recht das ich eine art Demo Version erstellen will.

Das mach ich mit abfrage von CurrentTime und Laststart und EndTime.

Wenn halt der LastStart größer ist als CurrentTime wird abgebrochen verhindert Uhr zurücksetzen.

Und wenn CurrentTime über EndTime ist dann kriegt er meldung abgelaufen.

Wenn dazu noch jemand Ideen hat her damit.

Danke nochmal

Gruß

Qt-nator
Sephral
Beiträge: 201
Registriert: 1. Februar 2006 09:40
Kontaktdaten:

Beitrag von Sephral »

Ganz praktisch ist auch ein Countdown.
Setze einen Wert fest wieviele Minuten/Stunden die Anwendung laufen darf und reduziere mit nem Timer ständig den Wert, bis er auf 0 ankommt. Das macht Dich unabhängiger von der Uhrzeit.

Du kannst auch einfach die Anzahl der möglichen Programmstarts definieren und nen Counter runter zählen.

Oder am besten kombinierst du alle 3 Methoden, damit es komplizierter wird. Die Daten legst du an unterschiedlichen Orten ab.

Z.B. ...
* Zeitbasiert -> Registry
* Minuten-Counter -> File im Windows-Verzeichnis
* Programmstart-Counter -> Webserver im Internet


Letztendlich wirst Du auf dieser Basis nie etwas wirklich sicheres bauen können, daher sind wir auf ein zugekauftes System umgestiegen. Das kann man zwar auch vielleicht irgendwie überwinden, die Hürde ist jedoch viel höher.


Bedenke aber...
Je sicherer ein Mechanismus wird, desto unbequemer wird das Handling der Anwendung oft für den Benutzer. Ich denke da z.B. an AutoCAD-Versionen die permanent eine Internetverbindung brauchten (Offline arbeiten? no way!). Die Herausforderung ist irgendeinen guten Mittelweg zu finden.


Ciao,
Sephral
Antworten