Text Datei verschlüsseln
-
#include <stdio.h> void encode (char *s) { if (!*s) return; *s++ ^= 0x55; for (;*s;s++) *s ^= *(s-1); } void decode ( char* s, int sz ) { int i; char buf[256]; for ( i = 1; i<sz; i++ ) { buf[i] = s[i]^s[i-1]; } buf[i-1] = '\0'; buf[0] = s[0]^0x55; strcpy( s, buf ); } int main() { char str[] = "pAlE DoGs aLgOrItHm hAcKeD bY PrOgGiNgMaNiA."; printf("Origin: \n%s\n\n", str ); encode(str); printf("Encoded: \n%s\n\n", str ); decode(str, sizeof(str) ); printf("Decoded: \n%s\n\n", str ); return 0; }
-
#include <stdio.h> void encode(char *s){ int count = 0; if(!*s) return; *s++ ^= 0x55; count++; while(*s){ ++count; *s++ ^= *(s-1); } } void decode(char *s){ char prevChar; char temp; if(!*s) return; prevChar = *s; *s++ ^= 0x55; while(*s){ temp = *s; *s++ ^= prevChar; prevChar = temp; } } int main(){ char str[] = "pAlE DoGs aLgOrItHm hAcKeD bY _Gast_."; encode(str); printf("Encoded: %s\n",str); decode(str); printf("Decoded: %s\n",str); return 0; }
-
mal ganz dumm gefragt, was bedeutet ?
*s++ ^= 0x55;
xD
pointer aufs aktuelle zeichen, mit ++ nach der operation erhöhen, und ... ja was ist denn ^= ??
ahhh xor...
-
Gast schrieb:
...
char str[] = "pAlE DoGs aLgOrItHm hAcKeD bY _Gast_.";
...
-
ja, wir haben 2 gewinner!
war doch nicht so schwer.
einer von euch darf jetzt die nächste rätselaufgabe stellen.
btw: sorry, moderators, ich weiss, sowas ist thread-hijacking, also bitte abtrennen wenn's sein muss.
-
pale dog schrieb:
einer von euch darf jetzt die nächste rätselaufgabe stellen.
Nagut, weil du es bist.
void encode( unsigned char* p ) { while(*p++) 1 & *p ? *p >>= 1, *p |= 0x80:(*p >>= 1); } void decode( unsigned char* p ) { // not written yet } #include <stdio.h> int main() { unsigned char text[] = "Hallo Echo !"; encode( text ); printf("Encoded: \n%s\n\n", text ); decode(text); printf("Decoded: \n%s\n\n", text ); return 0; }
-
lächerlich...
void decode (unsigned char *p) { while (*p++) *p = (*p<<1) | (*p >>7); }
-
Hab mir mal einen anderen Weg einfallen lassen...
char rol(unsigned char p){ char ret; asm( "mov %1, %%al;" "rol $1, %%al;" "mov %%al, %0;" :"=r"(ret) :"r"(p) :"%eax" ); return ret; } void decode( unsigned char* p ) { while(*p++){ *p = rol(*p); } }
-
Sieht beides ganz gut aus
-
Bei mir werden nach dem entschlüsseln alle lehrzeichen gelöscht