#707 - Criptare e decriptare stringhe utilizzando l'algoritmo di Rijndael
Spesso durante lo sviluppo delle nostre applicazioni ci troviamo a doverci scontrare con problemi legati alla sicurezza.
Uno su tutti è la necessità di dover nascondere in qualche modo le informazioni sensibili.
Il .NET Framework mette a disposizione una serie di classi dedicate alla crittazione dei dati. Di seguito riportiamo una classe che permette di criptare e decriptare una stringa utilizzando l'algoritmo di Rijndael a chiave simmetrica:
using System;
using System.Security.Cryptography;
using System.Text;
using System.IO;
public class DataCrypter
{
private static byte[] keyb;
private static byte[] ivb = {10,61,25,12,122,120,80,248,
13,182,196,212,176,46,23,85};
// la chiave è nel web.config
public static String keyFile = System.Configuration.ConfigurationSettings.AppSettings["KeyFile"];
private static byte[] LoadKey()
{
Byte[] key = new Byte[32];
StreamReader sr;
sr = File.OpenText(keyFile);
for (int i=0;i<32;i++)
{
String str = sr.ReadLine();
key[i] = Byte.Parse(str);
}
return key;
}
// cripta la stringa
public static string EncryptString(string src)
{
keyb = LoadKey();
byte[] p = Encoding.ASCII.GetBytes(src.ToCharArray());
byte[] encodedBytes = {};
MemoryStream ms = new MemoryStream();
RijndaelManaged rv = new RijndaelManaged();
CryptoStream cs = new CryptoStream(ms, rv.CreateEncryptor(keyb,ivb), CryptoStreamMode.Write);
try
{
cs.Write(p, 0, p.Length);
cs.FlushFinalBlock();
encodedBytes = ms.ToArray();
}
finally
{
ms.Close();
cs.Close();
}
return Convert.ToBase64String(encodedBytes);
}
// descripta
public static string DecryptString(string src)
{
if (src != String.Empty)
{
keyb = LoadKey();
byte[] p = Convert.FromBase64String(src);
byte[] initialText = new Byte[p.Length];
RijndaelManaged rv = new RijndaelManaged();
MemoryStream ms = new MemoryStream(p);
CryptoStream cs = new CryptoStream(ms, rv.CreateDecryptor(keyb, ivb), CryptoStreamMode.Read);
try
{
cs.Read(initialText, 0, initialText.Length);
}
finally
{
ms.Close();
cs.Close();
}
StringBuilder sb = new StringBuilder();
for(int i=0;i < initialText.Length;++i)
{
sb.Append((char)initialText[i]);
}
return sb.ToString();
}
return src;
}
public DataCrypter()
{}
}Approfondimenti
Commenti
Esprimi il tuo giudizio su questo script:
Per procedere devi essere autenticato.
r.cicca scrive:
#707 - Criptare e decriptare stringhe utilizzando l'algoritmo di Rijndael
L'articolo non è molto chiaro, esempio cos'è e a cosa server la variabile "ivb"? Perchè la chiave viene letta con "sr.ReadLine();" da un file dove è ...
L'articolo non è molto chiaro, esempio cos'è e a cosa server la variabile "ivb"? Perchè la chiave viene letta con "sr.ReadLine();" da un file dove è ...
Per inserire un commento, devi registrarti alla nostra community.








Stampa
Snippet
Download 



Hola!Sto criptando un file PDF usando uno stream ma purtroppo sebbene mi fa l'encrypt non mi esegue correttamente il decripty!Qualcuno sa dirmi perchè...
Continua »»» | Rispondi »»»