obfuz/Plugins/dnlib/Protection/EncryptionOperationFactory.cs

29 lines
1003 B
C#

namespace dnlib.Protection {
public class EncryptionOperationFactory {
public static IEncryptionInstruction CreateEncryptor(int seed) {
var r = new MyRandom(seed);
EncryptionOperationType type = (EncryptionOperationType)r.Next((int)EncryptionOperationType.MaxTypeValue);
var sr = new MyRandom(r.Next());
switch (type) {
case EncryptionOperationType.Xor: {
return new XorEncryptionOperation(sr.NextU(), sr.NextU(), sr.NextU());
}
case EncryptionOperationType.Add: {
return new AddEncryptionOperation(sr.NextU(), sr.NextU(), sr.NextU());
}
case EncryptionOperationType.Permute: {
return new PermuteEncryptionOperation(sr.NextU(), sr.NextU(), sr.NextU());
}
case EncryptionOperationType.Permute2: {
return new Permute2EncryptionOperation(sr.NextU(), sr.NextU(), sr.NextU());
}
case EncryptionOperationType.RotateLeftShift: {
return new RotateLeftShiftEncryptionOperation(sr.NextU(), sr.NextU(), sr.NextU());
}
}
return null;
}
}
}