private async Task CreateSignatureAsync(SortedDictionary <string, string> data) { // Combine as string var source = smsKey + "&" + data.JoinAsString() + smsKey; // Calculate signature var signatureBytes = await CryptographyUtils.MD5Async(source); data["signature"] = Convert.ToHexString(signatureBytes).ToLower(); }