/// <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)); }
/// <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); }