Non ci crederete ma non ho trovato in rete una piccola funzione per calcolare lo XOR di una stringa che prendesse la stessa dalla riga di comando come parametro. Ne ho trovate tante che partono dalla stringa giĆ inglobata nel codice del programma oppure che realizzano lo XOR di un file ma dalla riga di comando no. Fa niente, eccola qui.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
#include <iostream> #include <sstream> #include <fstream> using namespace std; int main(int argc, char* argv[]) { //apre il file per scriverci i risultati fstream File; File.open("data.txt", ios::out); //controlla il numero di argomenti if(argc<2) { cout << "Numero di argomenti errato!"; exit(1); } //legge la linea di comando char* stringa=argv[1]; char* chiave=argv[2]; int len = strlen(stringa); //effettua lo XOR for(int i = 0, y = 0; i < len; i++) { stringa[i] ^= chiave[y++]; cout << stringa[i]; File<<stringa[i]; if(y==strlen(chiave)) y=0; } cout<<"\n"; File<<"\n"; //effettua la decodifica for(int i = 0, y = 0; i < len; i++) { stringa[i] ^= chiave[y++]; cout << stringa[i]; File<<stringa[i]; if(y==strlen(chiave)) y=0; } cout<<"\n"; File<<"\n"; return 0; } |
Spesso, il risultato del calcolo dello XOR non riporta caratteri visibili pertanto ho aggiunto la scrittura della codifica in un file di testo. Questo permette di vedere il risultato di una elaborazione, cosa che potrebbe risultare difficile solo con la riga di comando.

