CreateSymmetricAlgorithm() public static method

public static CreateSymmetricAlgorithm ( ) : SymmetricAlgorithm
return System.Security.Cryptography.SymmetricAlgorithm
Beispiel #1
0
        public static byte[] DecryptAuthenticated(byte[] authEncryptedBytes, byte[] cryptKey)
        {
            if (cryptKey == null || cryptKey.Length != KeySizeBytes)
            {
                throw new ArgumentException($"CryptKey needs to be {KeySize} bits", nameof(cryptKey));
            }

            //Grab IV from message
            var iv = new byte[AesUtils.BlockSizeBytes];

            Buffer.BlockCopy(authEncryptedBytes, 0, iv, 0, iv.Length);

            using (var aes = AesUtils.CreateSymmetricAlgorithm())
            {
                using (var decrypter = aes.CreateDecryptor(cryptKey, iv))
                    using (var decryptedStream = new MemoryStream())
                    {
                        using (var decrypterStream = new CryptoStream(decryptedStream, decrypter, CryptoStreamMode.Write))
                            using (var writer = new BinaryWriter(decrypterStream))
                            {
                                //Decrypt Cipher Text from Message
                                writer.Write(
                                    authEncryptedBytes,
                                    iv.Length,
                                    authEncryptedBytes.Length - iv.Length - KeySizeBytes);
                            }

                        return(decryptedStream.ToArray());
                    }
            }
        }