datei verschlüsseln und entschlüsseln
-
Original erstellt von int_esskar:
...Jo. Ich erlaube mir, den Code leicht zu c++-ifizieren.
void cryptByAdd10(char* data,size_t size) { for(int i=0;i!=size;++i) data[i]+=10; }
-
Original erstellt von volkard:
...dann doch eher..
void cryptByAdd10(char* data,size_t size) { while(size--) data[size]+=10; }
[ Dieser Beitrag wurde am 07.10.2002 um 11:43 Uhr von int_esskar editiert. ]
-
Original erstellt von int_esskar:
dann doch eher..void cryptByAdd10(char* data,size_t size) { while(size--) data[size]+=10; }
Warum? Magste date[0] nicht behandeln?
Und was hast Du gegen for-Schleifen? Für solche Zwecke sind die doch fein lesbar.
Und irgendwie macht mein Compiler aus beiden Versionen 12 Assemblerbefehle.1: void cryptByAdd10(char* data,size_t size) 2: { 00401000 mov eax,edx 00401002 dec edx 00401003 test eax,eax 00401005 je cryptByAdd10+16h (00401016) 3: while(size--) 4: data[size]+=10; 00401007 mov al,byte ptr [ecx+edx] 0040100A add al,0Ah 0040100C mov byte ptr [ecx+edx],al 0040100F mov eax,edx 00401011 dec edx 00401012 test eax,eax 00401014 jne cryptByAdd10+7 (00401007) 5: } 00401016 ret 7: void cryptByAdd102(char* data,size_t size) 8: { 00401020 xor eax,eax 00401022 test edx,edx 00401024 je cryptByAdd102+16h (00401036) 00401026 push ebx 9: for(size_t i=0;i!=size;++i) 10: data[i]+=10; 00401027 mov bl,byte ptr [eax+ecx] 0040102A add bl,0Ah 0040102D mov byte ptr [eax+ecx],bl 00401030 inc eax 00401031 cmp eax,edx 00401033 jne cryptByAdd102+7 (00401027) 00401035 pop ebx 11: } 00401036 ret
Oh, die for-schleife hat nur 6 Befehle in der Schleife, die while-Schleife hat 7. Also ist for vielleicht sogar schneller.
Aber das war's gar nicht, um was es geht. Wollte nur die Lesbarkeit erhöhen, indem ich vereinfachte. Daß sowas gerne auch dabei schneller wird, ist purer Zufall.
Und anmeckern will ich Deine Lösung auch nicht, die ist bereits n der ersten Fassung ne gute Antwort für den Fragestellen. Wollte nur noch nen kleinen Tip einbringen.[ Dieser Beitrag wurde am 07.10.2002 um 12:08 Uhr von volkard editiert. ]
-
na gut, na gut, es ist ja auch noch früh!
-
ich habe meine Daten teilweise mir einem Bit-Kehrer "verschlüsselt.
Gruss SKLvoid krypto( char *anfadr ) { int i, l; unsigned char *poin; poin = anfadr; l = strlen( anfadr ); for ( i=0; i<l; i++ ) { *poin = ((*poin) << 4) + ((*poin) >> 4); poin++; } }
Edit:
Bitte die Code-Tags benutzen. Danke![ Dieser Beitrag wurde am 07.10.2002 um 20:19 Uhr von Jansen editiert. ]
-
Wie kann ich das Beispiel von int_esskar in einem eigenen Programm anwenden? Mir ist nicht ganz klar welche Funktionen ich aufrufen muss, damit ich aus einem uncodierten Eingabestring einen codierten Ausgabestring erhalte und umgekehrt. Und was für ein Algorithmus ist das eigentlich (Blowfish?)?
-
ich würde euch empfehlen, dass ihr lieber eine Krypto Library nehmt, die euch alles schon anbietet, da man bei den Implementierungen leicht misst machen kann (zB. beim C&P die SBox versaut, einfach was falsch verstanden, Code falsch eingebunden ...).
Librarys findet ihr in der FAQ oder per Google
-
mußte man nicht eigentlich nur die datei in einen buffer lesen, diesen verschlüsseln und das ganze dann in eine neue datei schreiben (zusammen mit angaben über ursprünglichen dateityp zum beispiel)??
danach dann vieleicht noch da original löschen...
oder sehe ich das völlig verkehrt?
-
jup, nur beim löschen der Datei solltest du darauf achten, dass man diese mit irgend welchen Zeichen überschreiben sollte (20 mal oder so glaub ich), weil man die sonst leicht rekonstruieren kann
(wenn du aber keine gute Verschlüsselung nutzt, ist das eh egal)
-
ja danke, war nur so ne frage, weil ich den ihnalt der diskusion nicht verstehe...
es ist doch jedem selbst überlasse, welchen algo zum verschlüsseln er nehmen will...
wer unbedingt mit caesar verschlüsseln will soll es tun...
fraglich ist ja auch immer vor wem man die daten schützen will??