Come chiamare Rijndalalg.createencryptor in c # correttamente quando salvi un sacco di file indipendenti

StackOverflow https://stackoverflow.com/questions/3273672

Domanda

Nella mia situazione ho un numero di file che verranno memorizzati su un server. Ciascuno di questi file viene creato da un'applicazione C # che sto scrivendo.

Sfondo: Per questa applicazione, la quantità di tempo necessaria per crittografare non è importante, i file tendono ad essere piccoli e abbiamo un sacco di cicli della CPU da risparmiare (il client è l'unico computer che crittografa o decrittografa i dati).

Ogni file non è correlato e ho bisogno che il contenuto sia protetto da snooping dal sysadmin o da chiunque abbia una presa del disco rigido (assumere un cattivo ragazzo)

La mia comprensione è RijndAelalg è un algoritmo solido per questo tipo di funzionamento? Supponendo che questa sia le informazioni siano corrette come usare correttamente la funzione Rijndalalg.CreateenCryptor?

L'usabilità che voglio è che il mio utente digiti una password, assumere la password è una buona password.

Le mie domande sono

    .
  1. Quanto è stato altezza migliore per convertire una stringa inserita dall'utente (C # '"String) in un byte []? Suppongo che dovrei avere il problema per aggirare il problema di avere 0 anni in ogni altro personaggio? Qual è il modo migliore per fare questa conversione?

  2. cosa uso per il IV? È la mia comprensione che questo è un valore che dovrebbe essere popolato (anche se MSDN dice che è ok per passare 'NULL'). Cosa uso per questo valore? Tieni presente che la mia situazione abbia un sacco di file indipendenti che devono essere decifrati in modo indipendente.

    Cosa succede se il IV è ben noto, è un problema? (potrei usare un hash del nome file poiché è un valore unico)

  3. C'è un algoritmo migliore di Rijndalalg per la crittografia di molti file indipendenti utilizzando la stessa password?

È stato utile?

Soluzione

Q1.Di solito uso il metodo GetBytes () della classe UTF8 per convertire le stringhe in array di byte.

Encoding.UTF8.GetBytes(myString)
.

Q2.Ogni volta che si crea un'istanza della classe RijndaelManaged, un IV è generato a caso per te (accessibile utilizzando la proprietà IV).Puoi randomizzarlo di nuovo chiamando il metodo GeneraTEIV ().

Come hai bisogno di questo IV per decrittografare i dati, potresti stare meglio a memorizzare questo IV da qualche parte invece di avere un IV unico per file.Se crittografa tutti i tuoi file utilizzando un IV statico, assicurati di impostare il IV quando si crea una nuova istanza della classe RijndAelManaged in qualsiasi momento che hai decrittografato un file.

Q3.RijndaelManaged / AES è l'algoritmo più sicuro là fuori, non userei nulla els.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top