Crittografia dati

martedì 30 gennaio 2007 - 16.50

AndreaBelmonte Profilo | Newbie

Ciao,
sto sviluppando un'applicazione windows che si occupa di inserire su db una serie di dati sensibili, uno dei quali (codice_fiscale) deve essere criptato crittografato utilizzando una chiave pubblica RSA ed applicando il padding PKCS#1 v 1.5; oltre a questo, in fase di inserimento su db il dato crittografato dovrà essere codificato BASE64 (RFC 1521).

Premesso che è la primissima volta che affronto il problema crittografia con .Net, qualcuno può aiutarmi a capire da dove si comincia?

Grazie,
Andrea


us01739 Profilo | Expert

Per iniziare prova a dare un'occhiata qui:
http://www.dotnethell.it/articles/RijndaelAlgorithm.aspx
Bye Bye

---------------------------------------------------
Roberto Gelmini - Microsoft Certified Professional
www.robertogelmini.com
---------------------------------------------------

AndreaBelmonte Profilo | Newbie

Ciao,
ti ringrazio - anche se in ritardo - per la risposta; ho letto l'articolo ed ho le idee un pò più chiare, anche se il mio problema è forse un pò particolare.
Dovrò infatti, criptare con padding PKCS#1 v 1.5 una stringa, avvalendomi di una chiave pubblica presente su di un file di certificato .cer.

Nella mia classe, in uno dei vani tentativi, ho scritto questo codice, ma ottengo l'errore "dimensioni della chiave troppo grandi per l'algoritmo usato":

sCodAssistito = drDettRic.GetValue(8).ToString();

RijndaelManaged rjm = new RijndaelManaged();

string Chiave = "2d 73 b7 10 71 f1 20 a7 eb 4f 4b e1 6a d2 7b a9 39 7d a8 e4";

rjm.KeySize = 1024;
rjm.BlockSize = 1024;

rjm.Key = ASCIIEncoding.ASCII.GetBytes(Chiave);

Byte[] input = Encoding.UTF8.GetBytes(sCodAssistito);

Byte[] output = rjm.CreateEncryptor().TransformFinalBlock(input, 0, input.Length);

string CodCriptato = Convert.ToBase64String(output);


E' mai capitato a qualcuno di voi di dover lavorare su cose simili?

Grazie,
Andrea

AndreaBelmonte Profilo | Newbie

Ciao,
ho finalmente trovato una soluzione - apparentemente - ottimale.

Avvalendomi dell'interessante componente Chilkat cryypt, disponibile sul sito http://www.chilkatsoft.com/ (trial di 30 giorni, necessita di pagamento per essere sbloccata), con poche righe di codice sono riuscito a criptare la stringa in oggetto utilizzando una chiave pubblica contenuta in un certificato x.509.

Copio il codice qui sotto, nel caso potesse servire da esempio ad altri:

//Stringa reperita da Db
sCodAssistito = drDettRic.GetValue(8).ToString();

Chilkat.Crypt crypt = new Chilkat.Crypt();

// Any code begins the 30-day trial.
crypt.UnlockComponent("qualsiasi_stringa_sblocca_per_30_giorni");

// Use RSA public-key encryption.
crypt.SetAlgorithmRSA();

// Tell Chilkat Crypt to find and use the first certificate found
// where one of the certificate's subject fields matches the
// string passed here.
//crypt.EncryptCertSubject = "Soggetto del certificato";

Chilkat.Cert cert = new Chilkat.Cert();
bool success = cert.LoadFromFile("mefpp.cer");

if (!success)
{
MessageBox.Show(cert.LastError.ToString());
return;
}

// Tell the crypt object to use the certificate.
crypt.SetEncryptCertificate(cert);
// Encrypt and convert the result bytes to Base-64.
byte [] encryptedBytes = crypt.EncryptStr(sCodAssistito);

String sCodCriptato = crypt.EncodeBase64(encryptedBytes);
Andrea Belmonte
www.andreabelmonte.com
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-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5