Пример #1
0
        private static byte[] Encrypt(byte[] input, byte[] key, int keySize, System.Security.Cryptography.CipherMode mode, byte[] iv = null)
        {
            using (var aesEncryption = Aes.Create())
            {
                if (iv == null)
                {
                    aesEncryption.GenerateIV();
                }
                else
                {
                    aesEncryption.IV = iv;
                }

                aesEncryption.KeySize   = keySize;
                aesEncryption.BlockSize = Crypto.DefaultBlocklength * 8;
                aesEncryption.Mode      = mode;
                aesEncryption.Padding   = PaddingMode.PKCS7;
                aesEncryption.Key       = key;
                ICryptoTransform crypto = aesEncryption.CreateEncryptor();

                // The result of the encryption and decryption
                byte[] cipherText = crypto.TransformFinalBlock(input, 0, input.Length);
                var    result     = new byte[cipherText.Length + aesEncryption.IV.Length];
                Buffer.BlockCopy(aesEncryption.IV, 0, result, 0, aesEncryption.IV.Length);
                Buffer.BlockCopy(cipherText, 0, result, aesEncryption.IV.Length, cipherText.Length);
                return(result);
            }
        }
Пример #2
0
        static byte[] Decrypt(byte[] input, byte[] key, int keySize, System.Security.Cryptography.CipherMode mode)
        {
            byte[] iv = input.Take(Crypto.DefaultBlocklength).ToArray();
            using (var aesEncryption = Aes.Create())
            {
                aesEncryption.KeySize   = keySize;
                aesEncryption.BlockSize = Crypto.DefaultBlocklength * 8;
                aesEncryption.Mode      = mode;
                aesEncryption.Padding   = PaddingMode.PKCS7;
                aesEncryption.IV        = iv;
                aesEncryption.Key       = key;

                ICryptoTransform decrypt = aesEncryption.CreateDecryptor();
                var encryptedBuffer      = input.Skip(Crypto.DefaultBlocklength).ToArray();
                return(decrypt.TransformFinalBlock(encryptedBuffer, 0, encryptedBuffer.Length));
            }
        }