Ejemplo n.º 1
0
        /// <summary>
        /// Transforms an input block.
        /// </summary>
        /// <param name="transformField">Either the <see cref="encryptor"/> or <see cref="decryptor"/> field.</param>
        /// <param name="transformCreator">The function to create a new transformer.</param>
        /// <param name="data">The input data.</param>
        /// <param name="iv">The initialization vector.</param>
        /// <returns>The result of the transform.</returns>
        private byte[] CipherOperation(ref Platform.ICryptoTransform transformField, Func <SymmetricCryptographicKey, byte[], Platform.ICryptoTransform> transformCreator, byte[] data, byte[] iv)
        {
            Requires.NotNull(transformCreator, nameof(transformCreator));
            Requires.NotNull(data, nameof(data));

            if (this.Padding == SymmetricAlgorithmPadding.None && data.Length == 0)
            {
                return(data);
            }

            if (iv != null || !this.CanStreamAcrossTopLevelCipherOperations || transformField == null)
            {
                transformField?.Dispose();
                transformField = transformCreator(this, iv);
            }

            if (this.CanStreamAcrossTopLevelCipherOperations)
            {
                byte[] outputBlock = new byte[data.Length];
                int    bytesOutput = transformField.TransformBlock(data, 0, data.Length, outputBlock, 0);
                Array.Resize(ref outputBlock, bytesOutput);
                return(outputBlock);
            }
            else
            {
                return(transformField.TransformFinalBlock(data, 0, data.Length));
            }
        }
        public string mEncryptUTF(string text)
        {
            byte[] plainBytes = System.Text.UTF8Encoding.UTF8.GetBytes(text);
            byte[] cipherBytes;

            using (System.Security.Cryptography.ICryptoTransform sse = rc2.CreateEncryptor())
            {
                using (MemoryStream ms = new MemoryStream())
                {
                    using (CryptoStream cs = new CryptoStream(ms, sse, CryptoStreamMode.Write))
                    {
                        cs.Write(plainBytes, 0, plainBytes.Length);
                        cs.FlushFinalBlock();
                        cs.Close();
                        cs.Dispose();
                    }
                    cipherBytes = ms.ToArray();
                    ms.Close();
                    ms.Dispose();
                }
                sse.Dispose();
            }

            return(Convert.ToBase64String(cipherBytes, 0, cipherBytes.Length));
        }
Ejemplo n.º 3
0
                /// <summary>
                /// Método para encriptar em AES
                /// </summary>
                /// <param name="plaintext"></param>
                /// <param name="text"></param>
                /// <returns></returns>
                public static byte[] Encrypt(byte[] plaintext, string text)
                {
                    /*
                     * Block Length: 128bit
                     * Block Mode: ECB
                     * Data Padding: Padded by bytes which Asc() equal for number of padded bytes (done automagically)
                     * Key Padding: 0x00 padded to multiple of 16 bytes
                     * IV: None
                     */
                    byte[] key = System.Text.ASCIIEncoding.ASCII.GetBytes(text);
                    System.Security.Cryptography.RijndaelManaged AES = new System.Security.Cryptography.RijndaelManaged();
                    AES.BlockSize = 128;
                    AES.Mode      = System.Security.Cryptography.CipherMode.ECB;
                    AES.Key       = key;

                    System.Security.Cryptography.ICryptoTransform encryptor = AES.CreateEncryptor();
                    MemoryStream mem = new MemoryStream();

                    System.Security.Cryptography.CryptoStream cryptStream = new System.Security.Cryptography.CryptoStream(mem, encryptor,
                                                                                                                          System.Security.Cryptography.CryptoStreamMode.Write);

                    cryptStream.Write(plaintext, 0, plaintext.Length);
                    cryptStream.FlushFinalBlock();

                    byte[] cypher = mem.ToArray();

                    cryptStream.Close();
                    cryptStream = null;
                    encryptor.Dispose();
                    AES = null;

                    return(cypher);
                }