Newsgroup: it.comp.lang.c
Titolo: libreria criptaggio

esiste una libreria che mi permetta di salvare files criptati?
Esempio, il mio prog deve avere un meccanismo di login, e mi
serve un file dove memorizzare le psw degli utenti.
Il file ovviamente deve essere non leggibile dal di fuori, quindi criptato
in qualche modo.
Esiste per esempio una "salva_file_criptato(FILE *fp)" ?

 Esiste per esempio una "salva_file_criptato(FILE *fp)" ?
fattela tu, una cosa del genere e' gia' sufficiente
void cripta_buffer(char *buffer,int buflen)
{
    int i;
    char *p;
    p=buffer;
    for(i=0 ; i < buflen ; i++)
    {
        *p++ += (i & 0xff) ;
    }
    return ;
}
poi fai la fwrite del buffer.
per decriptarlo, stessa cosa ma
*p++ -= (i & 0xff) ;
oppure ne fai una sola con xor
*p++ ^= (i & 0xff) ;
che quindi vale sia per criptare che decriptare.
C'e' da sbizzarrirsi.
-- 
-=[]=---iAN CooG---=[]=-
Fan #2 di Kaname Chidori

Andrea Richiardi wrote:

diventa un po' OT ma tra le altre librerie che puoi trovare in rete, se ti
interessa, so che tra le API di Windows ci sono anche alcune per la
crittografia dei dati.
Ciao
Wezzy

 ha scritto nel messaggio
news:zAaEa.13045$Fr5.2...@tornado.fastwebnet.it...


 e se volessi che il tutto funzionasse anche in unix?
Ma il mio post cosa ha che non va? -_-
Cosa non si e' capito?
-- 
-=[]=---iAN CooG---=[]=-
Invalid operator detected!
Replace and press any key.

chiedevo se esistessero delle librerie di criptaggio in unix.
La tua soluzione l'avevo valutata, però mi pare un po' troppo facile da
manomettere.
Certo una cosa già fatta con un bel algoritmo di criptaggio sarebbe meglio.
"iAN CooG" <201...@libero.it.no.spam> ha scritto nel messaggio
news:xCIEa.71139$Ny5.2...@twister2.libero.it...


 da manomettere.
E' solo un esempio, basta incasinarlo un po'. Poi dipende dal livello
degli utenti da cui ti devi proteggere, con certi basta rinominare un
txt in xyz e la protezione e' garantita 8D
-- 
-=[]=---iAN CooG---=[]=-
00-0000SYSTEM ERROR:  press F13 to continue.

beh io cercavo una via di mezzo, queste librerie funzionano sotto win?
"iAN CooG" <201...@libero.it.no.spam> ha scritto nel messaggio
news:kW5Fa.74744$Ny5.2...@twister2.libero.it...


beh io cercavo una via di mezzo, queste librerie funzionano sotto win?
Ricorda che non hai bisogno di un algoritmo reversibile per un sistema
di password sicuro.
Quasi tutti (se non tutti) i sistemi piu' sicuri funzionano cosi':
l'utente sceglie una pass (o gli viene affibbiata) quella pass viene
criptata dal sistema e salvata in un file psw.
le volte successive in cui l'utente si vorra' connettere succedera'
questo:
il sistema cripta la pass inserita dall'utente e, dopo criptata, la
confrontera' con quella nel file delle psw. Se sono uguali l'accesso
e' garantito, se non lo sono allora l'accesso sara' rifiutato...
Per quanto riguarda l'algoritmo non so suggerirti nulla xche' non mi
sono mai occupato dell'argomento cosi' a fondo.
Ciao,
Maurizio

 sono mai occupato dell'argomento cosi' a fondo.
MD5 e SHA-1, questi sono di facile implementazione e dovrebbero bastare.
Questi sono chiamati Hash_Algorithm, ed inizialmente venivano usati solo per
creare una "stringa" per i file che prende il nome di "digest" (o
fingerprint). Queste venivano /vengono utilizzate ad esempio nei file
download per verificare che il file sia integro, data la loro proprieta' che
garantisce *quasi* che sia uniche, ma vengono anche utilizzate per fare
quello che descrivevi, "one way hashing algorithm" come password criptata.
Ad esempio con MD5 "Tommy" diventa:
1a8b8e54b53f63a8efae84e064373f19
Anche un file lungo ha una hash della stessa lunghezza (per questo e' comodo
per verificare l'integrita'!).
Per provare ne esiste una versine online in Javascript (codice visibile):
http://www.geocities.com/SiliconValley/7116/jv_md5.html
Qui invece puoi trovare una implementazione in VC++, in versione codice
sorgente:
http://www.langfine.com/rsa_md5.htm
Tommy

 1a8b8e54b53f63a8efae84e064373f19
e quando parlavo di one-way intendevo dire che non esiste un metodo
conosciuto per ottenere "Tommy" da 1a8b8e54b53f63a8efae84e064373f19. L'unica
e' andare per tentativi... provare tutte le parole del mondo (anche quelle
senza senso) e vedere se producono tale hash... Non e' un lavoro semplice,
specialmente visto che per cio' che ne sappiamo
1a8b8e54b53f63a8efae84e064373f19 potrebbe essere prodotta da un file di 2GB
!!
(da qui ne deriva che sarebbe meglio evitare password corte, provare ad
esempio tutte le combinazioni di lettere e numeri composte da 3 caratteri
non e' impossibile, farlo per 12 caratteri e' gia' *moooolto* piu'
impegnativo!)
Tommy

 ha scritto nel messaggio
news:bc6vsv$s7u$1...@hercules.btinternet.com...


 hai suggerito?
Basta che usi google o ti compri un libro sull'argomento e probabilmente lo
troverai !
Ad ogni modo tra i link che ti ho dato... uno e' una implementazione in VC++
e ... probabilmente sara' C/C++ piu' che C++ puro, quindi non dovrebbe
essere un problema.
Tommy