UPD: Понял, что md5 - это функция из php
При помощи C# например так:
using System;
using System.Text;
using System.Security.Cryptography;
var attachmentBytes = File.ReadAllBytes("image.png");
var attachment = Convert.ToBase64String(attachmentBytes);
var secretKey = "...";
var str = $"st.attachment={attachment}{secretKey}";
var signature = Md5(str);
Console.WriteLine(signature);
// Функция, полностью повторяющая поведение md5 из php
static string Md5(string data) {
var bytes = Encoding.UTF8.GetBytes(data);
var hash = MD5.HashData(bytes);
return string.Create<byte[]>(hash.Length*2, hash, static (span, hash) => {
for(var i=0; i < hash.Length; i++) {
var slice = span.Slice(i*2, 2);
var octet = hash[i];
octet.TryFormat(slice, out _, "x2");
}
});
}