/// <summary> /// Decripta un buffer utilizzando una chiave ed un algoritmo forniti /// </summary> /// <param name="algorithm"></param> /// <param name="key"></param> /// <param name="input"></param> /// <returns></returns> public static byte[] Decrypt(Encryptor.Algorithm algorithm, string key, byte[] input) { byte[] buffkey = generateByteString(key); byte[] buff_iv = buffkey; return(Decrypt(algorithm, buffkey, buff_iv, input)); }
/// <summary> /// Decripta un testo in base 64 utilizzando una chiave ed un algoritmo forniti /// </summary> /// <param name="algorithm"></param> /// <param name="key"></param> /// <param name="inputb64"></param> /// <returns></returns> public static string DecryptFromBase64String(Encryptor.Algorithm algorithm, string key, string inputb64) { byte[] buffkey = generateByteString(key); byte[] buff_iv = buffkey; byte[] buff_input = Convert.FromBase64String(inputb64); return(Encoding.UTF8.GetString(Decrypt(algorithm, buffkey, buff_iv, buff_input))); }
/// <summary> /// Cripta un testo in base 64 utilizzando una chiave ed un algoritmo forniti /// </summary> /// <param name="algorithm"></param> /// <param name="key"></param> /// <param name="input"></param> /// <returns></returns> public static string EncryptToBase64String(Encryptor.Algorithm algorithm, string key, string input) { byte[] buffkey = generateByteString(key); byte[] buff_iv = buffkey; byte[] buff_input = generateByteString(input); return(Convert.ToBase64String(Encrypt(algorithm, buffkey, buff_iv, buff_input))); }
/// <summary> /// Decripta un buffer utilizzando una chiave, un IV ed un algoritmo forniti /// </summary> /// <param name="algorithm"></param> /// <param name="key"></param> /// <param name="iv"></param> /// <param name="input"></param> /// <returns></returns> public static byte[] Decrypt(Encryptor.Algorithm algorithm, byte[] key, byte[] iv, byte[] input) { try { //Crea algoritmo SymmetricAlgorithm oAlgo = getAlgorithm(algorithm); //Esegue validazione Key checkAlgoKey(oAlgo, key); //Decrypt return(Transform(input, oAlgo.CreateDecryptor(key, iv))); } catch (Exception ex) { throw new ApplicationException(string.Concat("Si e' verificato un errore durante l'operazione di decrypt: ", ex.Message)); } }
/// <summary> /// Crea algoritmo a partire dalla definizione /// </summary> /// <param name="algorithm"></param> /// <returns></returns> private static SymmetricAlgorithm getAlgorithm(Encryptor.Algorithm algorithm) { switch (algorithm) { case Algorithm.DES: return(DESCryptoServiceProvider.Create()); case Algorithm.RC2: return(RC2CryptoServiceProvider.Create()); case Algorithm.Rijndael: return(RijndaelManaged.Create()); case Algorithm.TripleDES: return(TripleDESCryptoServiceProvider.Create()); default: break; } //Default return(null); }