PDA

View Full Version : Cripatare file C#


HipT
08-07-2007, 20:05
Ciao a tutti.
Ho appena finito di impostare un programma per salvare le password (qualnto diventano troppe....):sofico:

Però ora ho un problema.:fagiano: .
Come faccio a criptare le informazioni che ho salvato?
Perchè ora io per prova le ho salvate in .txt.
Ho pensato:
Se anche creassi una chiave per criptare i file.Una sorta di codice di lettura.
Sarebbe comunque insicuro perchè se la chiave è nell'HD e deve essere leggibile quella non deve essere criptata...altrimenti non riesco ad aprirla per decifrare il codice.
Avete qualche consiglio sul come potrei fare?
Grazie.
Ciao!:mc: :muro:

atragon
08-07-2007, 23:30
Una volta avevo studiato il problema e scritto una bozza di articolo sul mio sito:
http://www.rexlen.it/cripdecr.htm

non so quanto sia ancora valido ma prova a vedere se c'è qualche cosa di utile.

HipT
09-07-2007, 09:14
Ti ringrazio moltissimo.E' propio quello che mi serviva.L'avevo trovato anche su msdn ma come hai detto anche tu è molto confusionario.
Grazie!!!

RaouL_BennetH
09-07-2007, 13:50
Io invece faccio uso di questo modello come base:

http://www.codeproject.com/csharp/FileEncryptDecrypt.asp

spero ti sia utile.

HipT
09-07-2007, 13:57
Io invece faccio uso di questo modello come base:

http://www.codeproject.com/csharp/FileEncryptDecrypt.asp

spero ti sia utile.

Quello lo avevo già visto.Solo che era più complesso.
Cmq adesso finalmente ho finito il programma:sofico: devo solo testarlo su un altro PC.
Grazie a entrambi!
Ciao!

HipT
10-07-2007, 15:37
Una cosa...potete dirmi altri metodi per criptare file oltre a quello Rijndael?
Ad esempio...l'SSL si può usare solo per le reti?:mbe:

71104
10-07-2007, 16:27
Una cosa...potete dirmi altri metodi per criptare file oltre a quello Rijndael?
Ad esempio...l'SSL si può usare solo per le reti?:mbe: si, perché la crittografia asimmetrica prevede una comunicazione in entrambi i versi. è un concetto non applicabile alla crittografia di un file poiché il file in un certo senso può essere inteso come un'informazione che una entità deve passare a se stessa nel futuro, solo che l'algoritmo di crittografia asimmetrica per poter funzionare richiede una comunicazione in entrambi i versi (richiederebbe che la parte ricevente invii informazioni a se stessa nel passato...).

non ci sono santi: se devi crittografare un file devi avere una chiave di decriptazione, e tale chiave deve essere memorizzata in un canale separato e presumibilmente sicuro. un'opzione sarebbe quella di impostare una password sul file e stabilire che la chiave altro non sia che un hash della password: quando devi criptare il file chiedi all'utente legittimo di specificare la password, ne fai l'hash MD5 o SHA o quello che ti pare, e usi l'hash o parte di esso come chiave di cifratura; oppure anche usi la password stessa come chiave. poi quando viene il momento di decifrarlo chiedi di inserire la password, dalla password inserita ottieni la chiave di crifratura, e decripti il file. se la password inserita è corretta riotterrai il file in chiaro, altrimenti otterrai dati senza senso.

HipT
10-07-2007, 16:32
Perchè adesso che ho finito il primo programma.Volevo farne uno dove praticamente:
L'utente seleziona un file e ci sono vari sistemi per criptarlo con bit variabili.
Per questo volevo più sistemi.Ma al massimo allungo la chiave di quello di rijandael..

71104
10-07-2007, 16:35
uhm, a dire il vero mi è venuta anche un'altra idea, e questa è basata su crittografia asimmetrica: potresti "firmare" il file. mettiamo che A deve inviare a B sto benedetto file, anche se in realtà B altri non è che A in un momento futuro (cioè A deve memorizzare il file su HD per poi poterlo rileggere in seguito). sia A che B hanno due chiavi ciascuno: una pubblica, nota a tutti e una privata, nota solo al proprietario (A o B). le due chiavi funzionano in maniera reciproca, per così dire: se cripti con una devi decriptare con l'altra; non è matematicamente possibile (non in tempi ragionevoli) decriptare con la stessa chiave con cui si è criptato (per conoscere i dettagli su come si generano e come si usano queste due chiavi vedi i dettagli dell'algoritmo RSA, che sarebbe l'algoritmo di handshake usato da SSL). quindi basta che A cripti con la chiave pubblica di B, in maniera tale che B, quando gli arriva il file, sia l'unico a poter decriptare con la sua chiave privata.

però in realtà siamo sempre là, c'è un segreto da mantenere: la chiave privata di B. un sacco di lavoro di crittografia asimmetrica per poi ritornare da capo a dodici. post inutile. scusate. :asd:

HipT
12-07-2007, 19:38
Una cosa...Ho provato ad aumentare i bit dell'argoritmo di rijandael.
Però mi dà quest'errore:

http://img262.imageshack.us/img262/2409/asdfasdfasdfns3.jpg

Allora.Ho cambiato "byte[] rijnIV = new byte[16];" mettendolo a 16 anche nel 32.Così' va bene però nel 64 non funziona e neanche nel 128.

atragon
12-07-2007, 22:49
Mi pare che ti stia scontrando con i limiti posti dall'algoritmo. Prova a leggere questo:
http://csrc.nist.gov/CryptoToolkit/aes/rijndael/Rijndael.pdf

HipT
13-07-2007, 12:19
Sì,hai ragione.L'ho letto ieri notte:muro: :muro:
Mi sapete dire un'altro algoritmo con limiti più elevati?:muro:
Grazie.