Umwandlung [gelöst]
Umwandlung [gelöst]
Hi,
wie kann ich denn aus so einem
QString "Ø%¨%IêE&)Ív©*ýýýý««««««««îþîþ"
eine Zahl und am besten eine Hexadezimal Zahl machen?
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.
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!
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!
So ein schmarn ich hab gefragt wie ich eine Zahl in einen String kriege.
ging ja dann so:
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.
So geht das irgendwie nur ist das nicht mein Code und ich versteh ihn nicht so ganz, auserdem nehm ich ja QString her.
ging ja dann so:
Code: Alles auswählen
unsigned int nCurrentTime = QDateTime::currentDateTime().toTime_t();
QString strCurrentTime = QString::number(nCurrentTime,10);
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 ) << " ";
}
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.
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.
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:
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
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 )
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
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
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
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
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