示例#1
0
        public string Encrypt(EnumCrypt typeCrypt, string inputText)
        {
            //Declarando encoder
            var UTF8Encoder = new UTF8Encoding();
            //Converte em base64 e envia para a função de encriptar e desencriptar depois retorna e converte para string novamente
            string Result = Convert.ToBase64String(EncryptDecrypt(typeCrypt, UTF8Encoder.GetBytes(inputText), true));

            //Retorno
            return(Result);
        }
示例#2
0
        public string Decrypt(EnumCrypt typeCrypt, string inputText)
        {
            //Declarando o encoder
            var utf8Encoder = new UTF8Encoding();

            try
            {
                //Converte em base64 e envia para a função de encriptar e desencriptar depois retorna e converte para string novamente
                return(utf8Encoder.GetString(EncryptDecrypt(typeCrypt, Convert.FromBase64String(inputText.Trim()), false)));
            }
            catch (Exception ex)
            {
                return(null);
            }
        }
示例#3
0
        public CryptGeneric(EnumCrypt typeCrypt, string NewPass)
        {
            //Usa saltos para evitar atack de dicionário
            var pdb = new PasswordDeriveBytes(NewPass, SALTBYTEARRAY);
            //--------------------------
            /*Encoder tipo DES*/
            //DES.Create();
            //--------------------------
            /*Encoder tipo RC2*/
            //RC2.Create();
            //--------------------------
            /*Encoder tipo Rijndael*/
            //Rijndael.Create();
            //--------------------------
            /*Encoder tipo Triple-DES*/
            //TripleDES.Create();
            //--------------------------

            SymmetricAlgorithm algo;

            switch (typeCrypt)
            {
            case EnumCrypt.DES:
                algo = DES.Create();
                break;

            case EnumCrypt.RC2:
                algo = RC2.Create();
                break;

            case EnumCrypt.Rijndael:
                algo = Rijndael.Create();
                break;

            case EnumCrypt.TripleDES:
                algo = TripleDES.Create();
                break;

            default:
                throw new NotImplementedException($"Cryptation not implemented [{typeCrypt}].");
            }

            MKEY = pdb.GetBytes(algo.KeySize / 8);
            MIV  = pdb.GetBytes(algo.BlockSize / 8);
        }
示例#4
0
        public static string EnCrypt(EnumCrypt typeCrypt, string texto, string pass)
        {
            var crypt = new CryptGeneric(typeCrypt, pass);

            return(crypt.Encrypt(typeCrypt, texto));
        }
示例#5
0
 public static string EnCrypt(EnumCrypt typeCrypt, string texto)
 {
     return(EnCrypt(typeCrypt, texto, ConfigurationManager.AppSettings["CryptKey"]));
 }
示例#6
0
        private byte[] EncryptDecrypt(EnumCrypt typeCrypt, byte[] inputBytes, bool encrpyt)
        {
            //--------------------------
            /*Encoder tipo DES*/
            //DES.Create();
            //--------------------------
            /*Encoder tipo RC2*/
            //RC2.Create();
            //--------------------------
            /*Encoder tipo Rijndael*/
            //Rijndael.Create();
            //--------------------------
            /*Encoder tipo Triple-DES*/
            //TripleDES.Create();
            //--------------------------
            SymmetricAlgorithm SA;

            switch (typeCrypt)
            {
            case EnumCrypt.DES:
                SA = DES.Create();
                break;

            case EnumCrypt.RC2:
                SA = RC2.Create();
                break;

            case EnumCrypt.Rijndael:
                SA = Rijndael.Create();
                break;

            case EnumCrypt.TripleDES:
                SA = TripleDES.Create();
                break;

            default:
                throw new NotImplementedException($"Cryptation not implemented [{typeCrypt}].");
            }

            //--------------------------
            SA.Key = MKEY;
            SA.IV  = MIV;
            //Transformação correta baseado no opção so usuario
            var transform = encrpyt ? SA.CreateEncryptor() : SA.CreateDecryptor();
            //Memory stream para saida
            var memStream = new MemoryStream();

            //Array de bytes para saida
            byte[] output;
            //Configura o encriptador e escreve no MemoryStream a saida
            var cryptStream = new CryptoStream(memStream, transform, CryptoStreamMode.Write);

            //Escreve as informações no mecanismo do encriptador
            cryptStream.Write(inputBytes, 0, inputBytes.Length);
            //Finaliza e escreve todas as informações necessárias na memoria
            cryptStream.FlushFinalBlock();
            //Resgata o array de bytes
            output = memStream.ToArray();
            //Finaliza o mecanismo de criptografia e fecha o canal de comunicação de memoria
            cryptStream.Close();
            return(output);
        }