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