PDA

View Full Version : [C++] criptaggio


marko.fatto
18-12-2007, 19:16
come vengono utilizzate di solito le chiavi di codifica ad esempio per un file di testo? vengono sommate-sottratte ad ogni carattere del file?:mbe:

^TiGeRShArK^
18-12-2007, 19:32
come vengono utilizzate di solito le chiavi di codifica ad esempio per un file di testo? vengono sommate-sottratte ad ogni carattere del file?:mbe:
....immagino che dipenda dall'algoritmo crittografico usato :fagiano:
uno dei + semplici è usare un XOR con una chiave sufficientemente lunga, ma cmq non è molto sicuro...

marko.fatto
18-12-2007, 19:40
io non ne devo usare uno in particolare... devo semplice prendere una chiave e un file e crearne un altro criptato con quella chiave per poter poi invertire il processo.. volevo chiedere come di solito vengono usate o se no come lo fareste voi (niente di complesso come livello crittografico (si dice così?) :stordita: )

^TiGeRShArK^
18-12-2007, 20:00
dipende dal linguaggio che devi usare..
con java è spiegato tutto qui:
http://java.sun.com/javase/6/docs/technotes/guides/security/crypto/CryptoSpec.html

per fare qualcosa di molto semplice invece io farei un semplice XOR bit per bit con una chiave se le richieste di sicurezza non sono tropo stringenti che mi pare la cosa + veloce da implementare in tutti i linguaggi senza usare funzioni particolari di libreria :p

marko.fatto
18-12-2007, 20:07
il linguaggio è il C++... io ho una array con tutti i carattere di un file e ad esempio 678 come chiave... come potrei fare? :confused:

^TiGeRShArK^
18-12-2007, 20:11
il linguaggio è il C++... io ho una array con tutti i carattere di un file e ad esempio 678 come chiave... come potrei fare? :confused:
un xor tra ogni byte del file e ogni byte della chiave ripetuto..
cmq 678 è troppo corta :asd:

71104
18-12-2007, 20:15
il linguaggio è il C++... io ho una array con tutti i carattere di un file e ad esempio 678 come chiave... come potrei fare? :confused: se programmi su Windows puoi utilizzare funzioni crittografiche robuste in maniera relativamente semplice (cioè senza stare a reimplementare da zero :D). guarda qua:
http://msdn2.microsoft.com/en-us/library/aa382016.aspx

marko.fatto
18-12-2007, 20:19
indovinate un po'... è un compitino per casa :asd:
quindi niente funzioni prefatte...

quanto dovrebbe essere lunga per essere accettabile?

ps:a me non importa che sia difficile da decriptare quindi dovrebbe bastare anche 678.... no? :stordita:

^TiGeRShArK^
18-12-2007, 20:26
indovinate un po'... è un compitino per casa :asd:
quindi niente funzioni prefatte...

quanto dovrebbe essere lunga per essere accettabile?

ps:a me non importa che sia difficile da decriptare quindi dovrebbe bastare anche 678.... no? :stordita:

puoi usare anche "marko.fatto678" :O
quanto meno è lievemente + difficile da decrittare :p
se non sbaglio il prob con l'XOR è dato porprio dalla ripetizione della chiave perchè basta fare l'XOR tra due pezzi di dati crittati della lunghezza giusta e ottenere la chiave se non erro :p

cionci
18-12-2007, 20:40
ma cmq non è molto sicuro...
Non necessariamente, se la chiave è lunga quanto il testo in chiaro è uno dei sistemi più sicuri :) E' alla base del One-Time Padding...

marko.fatto
18-12-2007, 20:43
Non necessariamente, se la chiave è lunga quanto il testo in chiaro è uno dei sistemi più sicuri :) E' alla base del One-Time Padding...

cioè? una chiave lunga tanto quanto tutto il file?

cionci
18-12-2007, 20:48
cioè? una chiave lunga tanto quanto tutto il file?
Certo...
Ovviamente non è applicabile in casi "normali".
Comunque usa AES...ne trovi tante implementazioni di pubblico dominio, ad esempio questa: http://www.lomont.org/Software/Misc/AES/AES.php

cionci
18-12-2007, 20:54
se non sbaglio il prob con l'XOR è dato porprio dalla ripetizione della chiave perchè basta fare l'XOR tra due pezzi di dati crittati della lunghezza giusta e ottenere la chiave se non erro :p
Il problema dello XOR è che non "spalma" su tutto il cifrato i byte del testo in chiaro. Cioè non vengono fatte permutazioni dei bit del testo in chiaro nel cifrato.
Se io ho un testo cifrato e conosco anche una sola parte del testo in chiaro lungo quanto la chiave (ad esempio la firma o l'intestazione di un lettera che sono molto spesso le stesse) posso risalire alla chiave semplicemente facendo lo XOR fra il testo cifrato e il testo in chiaro.

marko.fatto
18-12-2007, 21:12
dato che ci sono chiedo direttamente qui...

char *buffer;
int lenght;

ifstream in;
in.open(argv[1],ifstream::binary);
in.seekg(0,ifstream::end);
lenght=in.tellg();
in.seekg(0);
buffer=new char [lenght];
in.read(buffer,lenght);
in.close();

perché alla fine di buffer mi ritrovo dello "sporco"?



ps:lapidatemi pure per tutte le cose che ho sbagliato in quelle 3 righe di codice :D

71104
19-12-2007, 09:34
perché non hai concluso mettendo il carattere NUL finale, cosa che nel file non è contenuta. inoltre se ce lo metti ricordati di allocare length+1 bytes, non solo length.

cionci
19-12-2007, 09:37
ps:lapidatemi pure per tutte le cose che ho sbagliato in quelle 3 righe di codice :D
Va bene dai ;)

^TiGeRShArK^
19-12-2007, 12:52
Non necessariamente, se la chiave è lunga quanto il testo in chiaro è uno dei sistemi più sicuri :) E' alla base del One-Time Padding...
:fiufiu:
infatti avevo scritto:

se non sbaglio il prob con l'XOR è dato porprio dalla ripetizione della chiave

quindi mi pareva fosse implicito che una chiave che non si ripete, cioè una chiave lunga esattamente quanto il file da crittare, fosse del tutto sicura :D

^TiGeRShArK^
19-12-2007, 13:03
...lapidatemi pure però si scrive length non lenght :fagiano:

:D

banryu79
19-12-2007, 14:07
e che sei? il correttore ortografico di Word? :D

marko.fatto
19-12-2007, 14:45
...lapidatemi pure però si scrive length non lenght :fagiano:

:D

:eek: :eek:




:sob:

^TiGeRShArK^
20-12-2007, 14:16
e che sei? il correttore ortografico di Word? :D
no.. + che altro ogni volta sbagliavo a scrivere e mi incazzavo perchè mi dava errore il metodo .length delle stringhe quando ai tempi non usavo eclipse :p

banryu79
20-12-2007, 15:35
no.. + che altro ogni volta sbagliavo a scrivere e mi incazzavo perchè mi dava errore il metodo .length delle stringhe quando ai tempi non usavo eclipse :p

Anche a me capitava, ora ci pensa NetBeans :fagiano: