Ошибка в действии CS0117

luserz

Client
Регистрация
07.09.2016
Сообщения
114
Благодарностей
5
Баллы
18
Здравствуйте!

Код:
using System;
using System.Text;
using System.Security.Cryptography;


var secretKey = "123";
var attachmentBytes = "привет"; // ну например
var attachment = Convert.ToBase64(attachmentBytes);
var str = $"st.attachment={attachment}{secretKey}";
var bytes = Encoding.UTF8.GetBytes(str);

var hash = MD5.HashData(bytes);

var signature = Convert.ToBase64String(hash);
Тип Время Сообщение
11:44:56 Компиляция кода Ошибка в действии "CS0117" "'Convert' does not contain a definition for 'ToBase64'". [Строка: 3; Cтолбец: 26]
11:44:56 Компиляция кода Ошибка в действии "CS0117" "'MD5' does not contain a definition for 'HashData'". [Строка: 7; Cтолбец: 16]

Вылезает ошибки. Подскажите в чем может быть проблема?
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 718
Баллы
113
подсказками пользуйся

97253


по MD5 хэшу я хз где ты такой код взял, я вот в инете такой нарыл

C#:
        System.Security.Cryptography.MD5 md5Hasher = System.Security.Cryptography.MD5.Create();
        byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(input));
        StringBuilder md5hash = new StringBuilder();
        for (int i = 0; i < data.Length; i++)
        {
            md5hash.Append(data[i].ToString("x2"));
        }
        return md5hash.ToString();
 
  • Спасибо
Реакции: luserz

Sherminator

Client
Регистрация
10.09.2021
Сообщения
1 245
Благодарностей
673
Баллы
113
Здравствуйте!

Код:
using System;
using System.Text;
using System.Security.Cryptography;


var secretKey = "123";
var attachmentBytes = "привет"; // ну например
var attachment = Convert.ToBase64(attachmentBytes);
var str = $"st.attachment={attachment}{secretKey}";
var bytes = Encoding.UTF8.GetBytes(str);

var hash = MD5.HashData(bytes);

var signature = Convert.ToBase64String(hash);
Тип Время Сообщение
11:44:56 Компиляция кода Ошибка в действии "CS0117" "'Convert' does not contain a definition for 'ToBase64'". [Строка: 3; Cтолбец: 26]
11:44:56 Компиляция кода Ошибка в действии "CS0117" "'MD5' does not contain a definition for 'HashData'". [Строка: 7; Cтолбец: 16]

Вылезает ошибки. Подскажите в чем может быть проблема?
1) var attachment = Convert.ToBase64(attachmentBytes); ToBase64 такого методаа клаасс не содержит, есть метод ToBase64String который в качестве параметра принимает массив байтов а не стринг.
2) Абстрактный класс MD5 не содержит метода HashData
 
  • Спасибо
Реакции: luserz

luserz

Client
Регистрация
07.09.2016
Сообщения
114
Благодарностей
5
Баллы
18
Подскажите еще по теме. Нужен код для API Одноклассники не могу понять как мне сделать следующее. Нужно найти st.signature:

Сам запрос:

h ttps://conn ect.ok.ru/dk?st.cmd=WidgetMediatopicPost&st.app=#Идентификатор приложения#&st.groupId=#Идентификатор группы#&st.attachment={"media":[{"type":"text","text":"привет"}],"publishAt":"2022-08-27 12:05:00","onBehalfOfGroup":"true","disableComments":"false"}&st.signature=????

В справке написано:

Расчет подписи запроса st.signature
-------------------------------
В качестве секретного ключа при передаче параметра st.access_token используется session_secret_key сессии, иначе, используется секретный ключ приложения.
Все значения не должны быть закодированы (кроме случая, когда вы используете base64 для st.attachment).

md5("st.attachment=" + attachment + secretKey);
-------------------------------

Не понимаю, что в итоге необходимо сделать. Захешировать всю строку и срастить с secretKey или только st.attachment + secretKey. Как это сделать?

Перепробовал все, но выдает ошибку bad signature.
 

luserz

Client
Регистрация
07.09.2016
Сообщения
114
Благодарностей
5
Баллы
18
Может кому-то пригодится, нашел решение:

//Получаем значение строки из переменной
string attachment = "{\"media\":[{\"type\":\"text\",\"text\":\"привет\"}],\"publishAt\":\"2022-08-27 12:05:00\",\"onBehalfOfGroup\":\"true\",\"disableComments\":\"false\"}";
string secretKey = "123";
string input = $"st.attachment={attachment}{secretKey}";

System.Security.Cryptography.MD5 md5Hasher = System.Security.Cryptography.MD5.Create();
byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(input));
StringBuilder md5hash = new StringBuilder();
for (int i = 0; i < data.Length; i++)
{
md5hash.Append(data.ToString("x2"));
}
return md5hash.ToString();
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)