|  | @@ -55,7 +55,9 @@ namespace Renci.SshNet
 | 
	
		
			
				|  |  |          /// <summary>
 | 
	
		
			
				|  |  |          /// Gets supported encryptions for this connection.
 | 
	
		
			
				|  |  |          /// </summary>
 | 
	
		
			
				|  |  | +#pragma warning disable CA1859 // Use concrete types when possible for improved performance
 | 
	
		
			
				|  |  |          public IDictionary<string, CipherInfo> Encryptions { get; private set; }
 | 
	
		
			
				|  |  | +#pragma warning restore CA1859 // Use concrete types when possible for improved performance
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          /// <summary>
 | 
	
		
			
				|  |  |          /// Gets supported hash algorithms for this connection.
 | 
	
	
		
			
				|  | @@ -380,25 +382,30 @@ namespace Renci.SshNet
 | 
	
		
			
				|  |  |                      { "diffie-hellman-group1-sha1", () => new KeyExchangeDiffieHellmanGroup1Sha1() },
 | 
	
		
			
				|  |  |                  };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            Encryptions = new Dictionary<string, CipherInfo>
 | 
	
		
			
				|  |  | -                {
 | 
	
		
			
				|  |  | -                    { "aes128-ctr", new CipherInfo(128, (key, iv) => new AesCipher(key, iv, AesCipherMode.CTR, pkcs7Padding: false)) },
 | 
	
		
			
				|  |  | -                    { "aes192-ctr", new CipherInfo(192, (key, iv) => new AesCipher(key, iv, AesCipherMode.CTR, pkcs7Padding: false)) },
 | 
	
		
			
				|  |  | -                    { "aes256-ctr", new CipherInfo(256, (key, iv) => new AesCipher(key, iv, AesCipherMode.CTR, pkcs7Padding: false)) },
 | 
	
		
			
				|  |  | -                    { "aes128-cbc", new CipherInfo(128, (key, iv) => new AesCipher(key, iv, AesCipherMode.CBC, pkcs7Padding: false)) },
 | 
	
		
			
				|  |  | -                    { "aes192-cbc", new CipherInfo(192, (key, iv) => new AesCipher(key, iv, AesCipherMode.CBC, pkcs7Padding: false)) },
 | 
	
		
			
				|  |  | -                    { "aes256-cbc", new CipherInfo(256, (key, iv) => new AesCipher(key, iv, AesCipherMode.CBC, pkcs7Padding: false)) },
 | 
	
		
			
				|  |  | -                    { "3des-cbc", new CipherInfo(192, (key, iv) => new TripleDesCipher(key, new CbcCipherMode(iv), padding: null)) },
 | 
	
		
			
				|  |  | -                    { "blowfish-cbc", new CipherInfo(128, (key, iv) => new BlowfishCipher(key, new CbcCipherMode(iv), padding: null)) },
 | 
	
		
			
				|  |  | -                    { "twofish-cbc", new CipherInfo(256, (key, iv) => new TwofishCipher(key, new CbcCipherMode(iv), padding: null)) },
 | 
	
		
			
				|  |  | -                    { "twofish192-cbc", new CipherInfo(192, (key, iv) => new TwofishCipher(key, new CbcCipherMode(iv), padding: null)) },
 | 
	
		
			
				|  |  | -                    { "twofish128-cbc", new CipherInfo(128, (key, iv) => new TwofishCipher(key, new CbcCipherMode(iv), padding: null)) },
 | 
	
		
			
				|  |  | -                    { "twofish256-cbc", new CipherInfo(256, (key, iv) => new TwofishCipher(key, new CbcCipherMode(iv), padding: null)) },
 | 
	
		
			
				|  |  | -                    { "arcfour", new CipherInfo(128, (key, iv) => new Arc4Cipher(key, dischargeFirstBytes: false)) },
 | 
	
		
			
				|  |  | -                    { "arcfour128", new CipherInfo(128, (key, iv) => new Arc4Cipher(key, dischargeFirstBytes: true)) },
 | 
	
		
			
				|  |  | -                    { "arcfour256", new CipherInfo(256, (key, iv) => new Arc4Cipher(key, dischargeFirstBytes: true)) },
 | 
	
		
			
				|  |  | -                    { "cast128-cbc", new CipherInfo(128, (key, iv) => new CastCipher(key, new CbcCipherMode(iv), padding: null)) },
 | 
	
		
			
				|  |  | -                };
 | 
	
		
			
				|  |  | +            Encryptions = new Dictionary<string, CipherInfo>();
 | 
	
		
			
				|  |  | +            Encryptions.Add("aes128-ctr", new CipherInfo(128, (key, iv) => new AesCipher(key, iv, AesCipherMode.CTR, pkcs7Padding: false)));
 | 
	
		
			
				|  |  | +            Encryptions.Add("aes192-ctr", new CipherInfo(192, (key, iv) => new AesCipher(key, iv, AesCipherMode.CTR, pkcs7Padding: false)));
 | 
	
		
			
				|  |  | +            Encryptions.Add("aes256-ctr", new CipherInfo(256, (key, iv) => new AesCipher(key, iv, AesCipherMode.CTR, pkcs7Padding: false)));
 | 
	
		
			
				|  |  | +#if NET6_0_OR_GREATER
 | 
	
		
			
				|  |  | +            if (AesGcm.IsSupported)
 | 
	
		
			
				|  |  | +            {
 | 
	
		
			
				|  |  | +                Encryptions.Add("aes128-gcm@openssh.com", new CipherInfo(128, (key, iv) => new AesGcmCipher(key, iv), isAead: true));
 | 
	
		
			
				|  |  | +                Encryptions.Add("aes256-gcm@openssh.com", new CipherInfo(256, (key, iv) => new AesGcmCipher(key, iv), isAead: true));
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +#endif
 | 
	
		
			
				|  |  | +            Encryptions.Add("aes128-cbc", new CipherInfo(128, (key, iv) => new AesCipher(key, iv, AesCipherMode.CBC, pkcs7Padding: false)));
 | 
	
		
			
				|  |  | +            Encryptions.Add("aes192-cbc", new CipherInfo(192, (key, iv) => new AesCipher(key, iv, AesCipherMode.CBC, pkcs7Padding: false)));
 | 
	
		
			
				|  |  | +            Encryptions.Add("aes256-cbc", new CipherInfo(256, (key, iv) => new AesCipher(key, iv, AesCipherMode.CBC, pkcs7Padding: false)));
 | 
	
		
			
				|  |  | +            Encryptions.Add("3des-cbc", new CipherInfo(192, (key, iv) => new TripleDesCipher(key, new CbcCipherMode(iv), padding: null)));
 | 
	
		
			
				|  |  | +            Encryptions.Add("blowfish-cbc", new CipherInfo(128, (key, iv) => new BlowfishCipher(key, new CbcCipherMode(iv), padding: null)));
 | 
	
		
			
				|  |  | +            Encryptions.Add("twofish-cbc", new CipherInfo(256, (key, iv) => new TwofishCipher(key, new CbcCipherMode(iv), padding: null)));
 | 
	
		
			
				|  |  | +            Encryptions.Add("twofish192-cbc", new CipherInfo(192, (key, iv) => new TwofishCipher(key, new CbcCipherMode(iv), padding: null)));
 | 
	
		
			
				|  |  | +            Encryptions.Add("twofish128-cbc", new CipherInfo(128, (key, iv) => new TwofishCipher(key, new CbcCipherMode(iv), padding: null)));
 | 
	
		
			
				|  |  | +            Encryptions.Add("twofish256-cbc", new CipherInfo(256, (key, iv) => new TwofishCipher(key, new CbcCipherMode(iv), padding: null)));
 | 
	
		
			
				|  |  | +            Encryptions.Add("arcfour", new CipherInfo(128, (key, iv) => new Arc4Cipher(key, dischargeFirstBytes: false)));
 | 
	
		
			
				|  |  | +            Encryptions.Add("arcfour128", new CipherInfo(128, (key, iv) => new Arc4Cipher(key, dischargeFirstBytes: true)));
 | 
	
		
			
				|  |  | +            Encryptions.Add("arcfour256", new CipherInfo(256, (key, iv) => new Arc4Cipher(key, dischargeFirstBytes: true)));
 | 
	
		
			
				|  |  | +            Encryptions.Add("cast128-cbc", new CipherInfo(128, (key, iv) => new CastCipher(key, new CbcCipherMode(iv), padding: null)));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  #pragma warning disable IDE0200 // Remove unnecessary lambda expression; We want to prevent instantiating the HashAlgorithm objects.
 | 
	
		
			
				|  |  |              HmacAlgorithms = new Dictionary<string, HashInfo>
 |