private string Encrypt(string data) { if (String.IsNullOrEmpty(data)) { return(String.Empty); } if (EncryptionVersion == 2) { var bytes = Encoding.UTF8.GetBytes(data); switch (EncryptionMode) { case EncryptionMode.Basic: return(Base64.Encode(SymmetricEncryption.Encrypt(bytes, userId))); case EncryptionMode.Pattern: return(Base64.Encode(SymmetricEncryption.Encrypt(bytes, pattern.Concat(userId)))); case EncryptionMode.Password: return(Base64.Encode(SymmetricEncryption.Encrypt(bytes, password))); default: throw new NotImplementedException("Encryption mode not supported: " + EncryptionMode); } } else { throw new NotImplementedException("Encryption version not supported: " + EncryptionMode); } }
public static string GeneratePasswordHash(string salt, string password) { byte[] hash = Hash(salt + FixedSalt + Base64.Encode(Encrypt(password, GetCryptoAlgorithm()))); for (int i = 1; i < HashRounds; i++) { hash = Hash(hash); } return(Base64.Encode(hash)); }
private string Encrypt(string data) { if (String.IsNullOrEmpty(data)) { return(String.Empty); } EncryptionVersion = 3; EncryptionMode = EncryptionMode.Basic; cryptoConfig.ChecksumSize = RecommendedChecksumSize; cryptoConfig.Iterations = RecommendedIterations; cryptoConfig.SaltSize = RecommendedSaltSize; if (pattern != null && pattern.Length > 0) { EncryptionMode = EncryptionMode.Pattern; } if (password != null && password.Length > 0) { EncryptionMode = EncryptionMode == EncryptionMode.Pattern ? EncryptionMode.PatternAndPassword : EncryptionMode.Password; } var aesEncryptor = new AesEncryptor(cryptoConfig); switch (EncryptionMode) { case EncryptionMode.Basic: return(Base64.Encode(aesEncryptor.Encrypt(data, userId))); case EncryptionMode.Pattern: return(Base64.Encode(aesEncryptor.Encrypt(data, pattern.Concat(userId)))); case EncryptionMode.Password: return(Base64.Encode(aesEncryptor.Encrypt(data, password))); case EncryptionMode.PatternAndPassword: return(Base64.Encode(aesEncryptor.Encrypt(data, password.Concat(pattern)))); default: throw new NotImplementedException("Encryption mode not supported: " + EncryptionMode); } }