Example #1
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);
        }