Ejemplo n.º 1
0
        public static object GetCryptoServiceProvider(this EnumCryptographyAlgorithms algorithm)
        {
            switch (algorithm)
            {
            // Symmetric Algorithms
            case EnumCryptographyAlgorithms.Aes: return(new AesCryptoServiceProvider());             // :AES  :SymmetricAlgorithm

            case EnumCryptographyAlgorithms.Des: return(new DESCryptoServiceProvider());             // :DES :SymmetricAlgorithm

            case EnumCryptographyAlgorithms.TripleDes: return(new TripleDESCryptoServiceProvider()); // :TripleDES :SymmetricAlgorithm

            case EnumCryptographyAlgorithms.Rc2: return(new RC2CryptoServiceProvider());             // :RC2 :SymmetricAlgorithm

            // Hash Algorithms
            case EnumCryptographyAlgorithms.Md5: return(new MD5CryptoServiceProvider());       // MD5  :HashAlgorithm

            case EnumCryptographyAlgorithms.Sha1: return(new SHA1CryptoServiceProvider());     // SHA1  :HashAlgorithm

            case EnumCryptographyAlgorithms.Sha256: return(new SHA256CryptoServiceProvider()); // SHA256 :HashAlgorith

            case EnumCryptographyAlgorithms.Sha384: return(new SHA384CryptoServiceProvider()); // SHA384  :HashAlgorithm

            case EnumCryptographyAlgorithms.Sha512: return(new SHA512CryptoServiceProvider()); // SHA512  :HashAlgorithm

            default: return(new AesCryptoServiceProvider());
            }
        }
Ejemplo n.º 2
0
        public static byte[] Encrypt(this byte[] toEncryptArray, string key, EnumCryptographyAlgorithms algorithm)
        {
            byte[] resultArray = null;

            var objAlgorithmProvider = algorithm.GetCryptoServiceProvider();

            if (objAlgorithmProvider is SymmetricAlgorithm symmetricAlg)
            {
                //set the secret key for the symmetric algorithm
                symmetricAlg.SetupSymmetric(key);

                var cTransform = symmetricAlg.CreateEncryptor();
                //transform the specified region of bytes array to resultArray
                resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
                //Release resources held by symmetric Encryptor
                symmetricAlg.Clear();
            }
            else if (objAlgorithmProvider is HashAlgorithm hashAlg)
            {
                resultArray = hashAlg.ComputeHash(toEncryptArray);
                //Release resources held by hasher
                hashAlg.Clear();
            }

            return(resultArray);
        }
Ejemplo n.º 3
0
        public static string Decrypt(this string cipherString, string key, EnumCryptographyAlgorithms algorithm)
        {
            //get the byte code of the string
            var toEncryptArray = Convert.FromBase64String(cipherString);
            var decryptedBytes = toEncryptArray.Decrypt(key, algorithm);

            //return the Clear decrypted TEXT
            return(Encoding.UTF8.GetString(decryptedBytes));
        }
Ejemplo n.º 4
0
        public static string Encrypt(this string toEncrypt, string key, EnumCryptographyAlgorithms algorithm)
        {
            // string --> (utf8) byte[] --> encrypt ---> byte[] ---> (base64) string
            var toEncryptArray = Encoding.UTF8.GetBytes(toEncrypt);
            var encryptedBytes = toEncryptArray.Encrypt(key, algorithm);

            //Return the encrypted data into unreadable string format
            return(Convert.ToBase64String(encryptedBytes, 0, encryptedBytes.Length));
        }
Ejemplo n.º 5
0
        public static byte[] Decrypt(this byte[] cipherArray, string key, EnumCryptographyAlgorithms algorithm)
        {
            byte[] resultArray = null;

            var objAlgorithmProvider = algorithm.GetCryptoServiceProvider();

            if (objAlgorithmProvider is SymmetricAlgorithm symmetricAlg)
            {
                //set the secret key for the symmetric algorithm
                symmetricAlg.SetupSymmetric(key);

                var cTransform = symmetricAlg.CreateDecryptor();
                resultArray = cTransform.TransformFinalBlock(cipherArray, 0, cipherArray.Length);

                //Release resources held by symmetric Encryptor
                symmetricAlg.Clear();
            }

            return(resultArray);
        }