001
05.09.2004, 14:48 Uhr
(un)wissender
Niveauwart
|
Schmeiss den Code weg, der komiliert nicht, ist semantisch fehlerhaft und tut auch nichts. strlen zählt die Bytes mit zum Nullbyte, ausgeschrieben string_length.
Ein naiver Ansatz, der funktioniert:
C++: |
#include <iostream> #include <string>
int main(){
std::string password, input; std::cout << "Source: "; std::cin >> input; std::cout << "Pass: "; std::cin >> password; /* Wir verschlüsseln den Text, indem wir ihn jeden Buchstaben des Textes mit einem Buchstaben des Passwortes verschlüsseln. */ for(unsigned i = 0; i < input.size(); ++i) { input[i] = input[i] ^ password[i % password.size()]; }
std::cout << "Crypted: " << input << std::endl; /* Nun entschlüsseln wir den Text wieder, indem wir die Verschlüsselung umkehren und den jeden Buchstaben des verschlüsselten Text einfach wieder mit jedem Buchstaben des (neuen) Passwortes XOR-Verknüpfen. */ for(unsigned i = 0; i < input.size(); ++i) { input[i] = input[i] ^ password[i % password.size()]; } std::cout << "Decrypted: " << input; getchar(); return 0; };
|
Allerdings fehlen hier noch Fehlerbehandlung, usw. -- Wer früher stirbt ist länger tot. Dieser Post wurde am 05.09.2004 um 14:57 Uhr von (un)wissender editiert. |