Criptare e cambiare estensione

lunedì 26 gennaio 2009 - 09.29

ilario Profilo | Senior Member

ciao

ho un file xml per la stampa

per non renderlo accessivo e quindi facilmente modificabile avevo pensato a criptarlo,

ho trovato diverse soluzioni, mi potreste consigliare la più semplice e pulita, non deve essere sicura, deve essero solo illeggibile

vorrei poi cambiare anche l'estensione

ciao
ilario

aiedail92 Profilo | Expert

Ciao

Per la criptazione puoi usare la classe Rijndael nel namespace System.Security.Cryptography. Il metodo da usare è molto semplice, un esempio di codice potrebbe essere questo:

Sub CrittaFile(ByVal filePath As String, ByVal passw As String) 'Apre uno stream da cui leggere il file e uno su cui scrivere il nuovo file Using sRead As New FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.None), _ sWrite As New FileStream(Path.ChangeExtension(filePath, ".cryp"), FileMode.Create) 'Crea il crittografatore Dim crypto As New RijndaelManaged() Dim md5 As New MD5CryptoServiceProvider() Dim passwBytes As Byte() = Encoding.Unicode.GetBytes(passw) 'Imposta chiave e IV per la crittografazione crypto.Key = md5.ComputeHash(passwBytes) crypto.IV = md5.ComputeHash(crypto.Key) 'Adesso usa il crittografatore per crittografare lo stream Using cStream As New CryptoStream(sWrite, crypto.CreateEncryptor(), CryptoStreamMode.Write) 'Ottiene i dati non crittografati Dim data(sRead.Length - 1) As Byte sRead.Read(data, 0, data.Length) 'E li crittografa nel file in uscita cStream.Write(data, 0, data.Length) End Using End Using 'Adesso elimina il file non crittato File.Delete(filePath) End Sub Sub DecrittaFile(ByVal filePath As String, ByVal passw As String) 'Apre uno stream da cui leggere il file e uno su cui scrivere il nuovo file Using sRead As New FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.None), _ sWrite As New FileStream(Path.ChangeExtension(filePath, ".xml"), FileMode.Create) 'Crea il decrittografatore Dim crypto As New RijndaelManaged() Dim md5 As New MD5CryptoServiceProvider() Dim passwBytes As Byte() = Encoding.Unicode.GetBytes(passw) 'Imposta chiave e IV per la crittografazione crypto.Key = md5.ComputeHash(passwBytes) crypto.IV = md5.ComputeHash(crypto.Key) 'Adesso usa il decrittografatore per decrittografare lo stream Using cStream As New CryptoStream(sRead, crypto.CreateDecryptor(), CryptoStreamMode.Read) 'Ottiene i dati crittografati Dim data(sRead.Length - 1) As Byte Dim realSize As Integer = cStream.Read(data, 0, data.Length) 'E li decrittografa nel file in uscita sWrite.Write(data, 0, realSize) End Using End Using ''Se vuoi, elimina il file crittato 'File.Delete(filePath) End Sub

Luca

ilario Profilo | Senior Member

grazie mille

ciao Ilario
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5