internal static (string output, string iv) Encrypt(string input, string password) { byte[] encrypted; byte[] IV; byte[] Salt = GetSalt(); using (var aesAlg = Aes.Create()) { aesAlg.Key = CreateMD5(password); aesAlg.Mode = CipherMode.CBC; aesAlg.Padding = PaddingMode.PKCS7; aesAlg.GenerateIV(); IV = aesAlg.IV; var encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV); using (var memoryStream = new MemoryStream()) { using (var cryptoStream = new CryptoStream(memoryStream, encryptor, CryptoStreamMode.Write)) { using (var streamWriter = new StreamWriter(cryptoStream)) { streamWriter.Write(input); } encrypted = memoryStream.ToArray(); } } } return(Convert.ToBase64String(encrypted.ToArray()), Convert.ToBase64String(IV.ToArray())); }