public string DecryptString(string text, EncryptionTypeEnums type) { try { string password = GetPassword(type); byte[] baPwd = Encoding.UTF8.GetBytes(password); byte[] baPwdHash = SHA256.Create().ComputeHash(baPwd); byte[] baText = Convert.FromBase64String(text); byte[] baDecrypted = AES_Decrypt(baText, baPwdHash); int saltLength = GetSaltLength(); byte[] baResult = new byte[baDecrypted.Length - saltLength]; for (int i = 0; i < baResult.Length; i++) { baResult[i] = baDecrypted[i + saltLength]; } string result = Encoding.UTF8.GetString(baResult); return(result); } catch (Exception ex) { throw ex; } }
public string EncryptString(string text, EncryptionTypeEnums type) { try { string password = GetPassword(type); byte[] baPwd = Encoding.UTF8.GetBytes(password); byte[] baPwdHash = SHA256.Create().ComputeHash(baPwd); byte[] baText = Encoding.UTF8.GetBytes(text); byte[] baSalt = GetRandomBytes(); byte[] baEncrypted = new byte[baSalt.Length + baText.Length]; for (int i = 0; i < baSalt.Length; i++) { baEncrypted[i] = baSalt[i]; } for (int i = 0; i < baText.Length; i++) { baEncrypted[i + baSalt.Length] = baText[i]; } baEncrypted = AES_Encrypt(baEncrypted, baPwdHash); string result = Convert.ToBase64String(baEncrypted); return(result); } catch (Exception ex) { throw ex; } }
private string GetPassword(EncryptionTypeEnums type) { switch (type) { case EncryptionTypeEnums.Member: return(EncryptionPassword.MemberEncryptionPassword); default: throw new Exception("Encryption password not available"); } }