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); } }
private string Decrypt(string encData) { if (String.IsNullOrEmpty(encData)) { return(String.Empty); } if (EncryptionVersion == 1) { var key = EncryptionMode == EncryptionMode.Pattern ? EncryptionV1.GeneratePasswordHash(pattern, userId) : userId; var iv = new SecureString().AppendChars("LCGoogleApps"); var algorithm = EncryptionV1.CreateCryptoAlgorithm(key, iv); return(EncryptionV1.Decrypt(Base64.Decode(encData), algorithm)); } else if (EncryptionVersion == 2) { var encBytes = Base64.Decode(encData); switch (EncryptionMode) { case EncryptionMode.Basic: return(Encoding.UTF8.GetString(SymmetricEncryption.Decrypt(encBytes, userId))); case EncryptionMode.Pattern: return(Encoding.UTF8.GetString(SymmetricEncryption.Decrypt(encBytes, pattern.Concat(userId)))); case EncryptionMode.Password: return(Encoding.UTF8.GetString(SymmetricEncryption.Decrypt(encBytes, password))); default: throw new NotImplementedException("Encryption mode not supported: " + EncryptionMode); } } else { throw new NotImplementedException("Encryption version not supported: " + EncryptionMode); } }