internal static CoreKey NewKey(this PrimeCoreKey prime, CoreKeyConfig config) { var maxLength = config.Length; var keyBuilder = new StringBuilder(); var format = config.CoreKeyFormatterConfig; for (int i = 0; i <= maxLength; i++) { GeneratedKeys(out string firstSmallChar, out string secondSmallChar, out int num, out string bigChar); var combined = $"{firstSmallChar}{secondSmallChar}{num}{bigChar}"; if (config.UseSalt) { keyBuilder.Append(KeySalt.RNGCrypto(combined)); } keyBuilder.Append(combined); if (keyBuilder.Length > config.Length) { keyBuilder.Remove(maxLength, keyBuilder.Length - maxLength); break; } } if (PrimeStore.IgnoredKeys.Any(x => x.Result == keyBuilder.ToString())) { NewKey(prime, config); } if (format.Format == PrimeFormatter.Ignore || format.Format == null) { return new CoreKey { Result = keyBuilder.ToString() } } ; if (format.IsStrictedLength) { return new CoreKey { Result = KeyFormatter.UseUnderscore(keyBuilder.ToString(), config) } } ; return(new CoreKey { Result = KeyFormatter.UseUnderscore(keyBuilder.ToString()) }); }
public bool Compare(EncryptionData other) => other.Password == Password && other.KeySalt.CompareArrayItems(KeySalt.ToArray()) && other.IvSalt.CompareArrayItems(IvSalt.ToArray());