• Как составить st.signature для API Одноклассники?

    vabka
    @vabka
    Токсичный шарпист
    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");
        }
      }); 
    }
    Ответ написан