<PackageReference Include="BouncyCastle.Cryptography" Version="2.6.2" />

DesEdeKeyGenerator

using Org.BouncyCastle.Crypto.Parameters; using System; namespace Org.BouncyCastle.Crypto.Generators { public class DesEdeKeyGenerator : DesKeyGenerator { public DesEdeKeyGenerator() { } internal DesEdeKeyGenerator(int defaultStrength) : base(defaultStrength) { } protected override void EngineInit(KeyGenerationParameters parameters) { random = parameters.Random; strength = (parameters.Strength + 7) / 8; if (strength == 0 || strength == 21) strength = 24; else if (strength == 14) { strength = 16; } else if (strength != 24 && strength != 16) { string[] obj = new string[5] { "DESede key must be ", null, null, null, null }; int num = 192; obj[1] = num.ToString(); obj[2] = " or "; num = 128; obj[3] = num.ToString(); obj[4] = " bits long."; throw new ArgumentException(string.Concat(obj)); } } protected override byte[] EngineGenerateKey() { byte[] array = new byte[strength]; do { random.NextBytes(array); DesParameters.SetOddParity(array); } while (DesEdeParameters.IsWeakKey(array) || !DesEdeParameters.IsRealEdeKey(array, 0)); return array; } } }