Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
20 / 37 / 9
Регистрация: 09.06.2015
Сообщений: 176

Функция hash_hmac

24.11.2016, 12:25. Показов 1916. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую Всех.
Подскажите, пжта, есть ли подобный метод в c#, функции из php

PHP
1
string hash_hmac ( string $algo , string $data , string $key [, bool $raw_output = false ] )
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.11.2016, 12:25
Ответы с готовыми решениями:

Drupal 8 и LAMP. Белый экран при установке. Ошибка вызова hash_hmac
Доброе время суток. Уже третий день безуспешно пытаюсь настроить LAMP для работы с Drupal 8. Запуск insatll.php приводит к появлению...

Перегрузка операций: friend-функция или функция-член класса
Здравствуйте, меня интересует вопрос, в чем разница при перегрузке операторов через operator и friend. Вот к примеру такой код. class...

Функция sqrt: существует более одного экземпляра. Функция перегруженная
#include <iostream> #include <math.h> #include <iomanip> using namespace std; int main(){ float s, p; int c, a; s=0; ...

7
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,898
Записей в блоге: 1
24.11.2016, 16:58
Patlat, смотри классы-наследники System.Security.Cryptography.HMAC
1
20 / 37 / 9
Регистрация: 09.06.2015
Сообщений: 176
27.11.2016, 16:14  [ТС]
Поковырялся я в классе, убрал то, что мне не нужно и вот, что у меня получается:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
 public class HMACSHA256example
    {
 
        public static void Main(string[] Fileargs)
        {
            string dataFile;
            string signedFile;
            string keySekret = "a4d1b77bbb1a4a5ca695ad72c84b77e5";
 
            
            if (Fileargs.Length < 2)
            {
                dataFile = @"text.txt";
                signedFile = "signedFile.enc";
 
                if (!File.Exists(dataFile))
                {
                    using (StreamWriter sw = File.CreateText(dataFile))
                    {
                        sw.WriteLine("bla_bla_bla_bla");
                    }
                }
 
            }
            else
            {
                dataFile = Fileargs[0];
                signedFile = Fileargs[1];
            }
            try
            {
                byte[] secretkey = Encoding.Default.GetBytes(keySekret);
                
                    SignFile(secretkey, dataFile, signedFile);
 
                    string str = File.ReadAllText("signedFile.enc", Encoding.Default);
                    Console.WriteLine("{0}", str);
                
            }
            catch (IOException e)
            {
                Console.WriteLine("Error: File not found", e);
            }
 
        }  
 
        public static void SignFile(byte[] key, String sourceFile, String destFile)
        {
            using (HMACSHA256 hmac = new HMACSHA256(key))
            {
                using (FileStream inStream = new FileStream(sourceFile, FileMode.Open))
                {
                    using (FileStream outStream = new FileStream(destFile, FileMode.Create))
                    {
                        
                        byte[] hashValue = hmac.ComputeHash(inStream);
                        
                        inStream.Position = 0;
                         
                        outStream.Write(hashValue, 0, hashValue.Length);
                         
                        int bytesRead;
                        byte[] buffer = new byte[1024];
                        do
                        {
                            bytesRead = inStream.Read(buffer, 0, 1024);
                            outStream.Write(buffer, 0, bytesRead);
                        } while (bytesRead > 0);
                    }
                }
            }
            return;
        } 
  
    }
В данном классе, на основание секретного ключа и текста в файле text.txt, производится хеширования сообщения, которое сохраняется в файл signedFile.enc. С теми данными которые я проставил, получил вот такой результат: њznжQB°D?$U@:ЦОBЏмэЛ“вфҐ$П'о<bla_bla_ bla_bla

Но, если я, эти же данные подставлю в

PHP
1
hash_hmac('sha256', 'bla_bla_bla_bla', 'a4d1b77bbb1a4a5ca695ad72c84b77e5');
То получу: d4a6574c625ff8e6f2765ea2b416384da4e72c19 8e6e88289cc435fccf24bdd9
Вот такого результата я хочу добиться.
Прошу помощи у тех, кто понимает мой вопрос, что я не так делаю?
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,898
Записей в блоге: 1
27.11.2016, 17:29
Лучший ответ Сообщение было отмечено Patlat как решение

Решение

Patlat,
Цитата Сообщение от Patlat Посмотреть сообщение
То получу: d4a6574c625ff8e6f2765ea2b416384da4e72c19 8e6e88289cc435fccf24bdd9
А мне http://phpfiddle.org/ выдал 5c35b20977bf4a087bb5820ac8167759e774cde8 9b8a070b6ac4b2a3886d9120. И такой же результат выдал следующий код:
C#
1
2
3
4
5
6
7
8
string strKey = "a4d1b77bbb1a4a5ca695ad72c84b77e5";
 
HMACSHA256 h = new HMACSHA256();
h.Key = Encoding.ASCII.GetBytes(strKey);
byte[] hash = h.ComputeHash(Encoding.ASCII.GetBytes("bla_bla_bla_bla"));
 
string strHash = BitConverter.ToString(hash).Replace("-", "").ToLower();
WriteLine(strHash);
1
20 / 37 / 9
Регистрация: 09.06.2015
Сообщений: 176
27.11.2016, 17:40  [ТС]
OwenGlendower, Искренее спасибо, у тебя всё правильно получилось, это я хешировал со скобками, а в примере забыл прописать их. Работает как должно, ещё раз спасибо)
0
20 / 37 / 9
Регистрация: 09.06.2015
Сообщений: 176
02.12.2016, 14:19  [ТС]
OwenGlendower,
Приветствую, подскажи пжта, а как можно получить обратно строку., тоесть, если у меня есть ключ и сгенерированный хеш код.., могу ли я получить обратно исходную строку?
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,898
Записей в блоге: 1
02.12.2016, 14:41
Patlat, нет. Это однонаправленный процесс.
1
1 / 1 / 0
Регистрация: 06.05.2018
Сообщений: 15
06.05.2018, 02:18
Цитата Сообщение от OwenGlendower Посмотреть сообщение
И такой же результат выдал следующий код:
C#
1
2
3
4
5
6
string strKey = "a4d1b77bbb1a4a5ca695ad72c84b77e5";
HMACSHA256 h = new HMACSHA256();
h.Key = Encoding.ASCII.GetBytes(strKey);
byte[] hash = h.ComputeHash(Encoding.ASCII.GetBytes("bla_bla_bla_bla"));
string strHash = BitConverter.ToString(hash).Replace("-", "").ToLower();
WriteLine(strHash);
Спасибо. То, что нужно было
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.05.2018, 02:18
Помогаю со студенческими работами здесь

Функция удаления текста в скобках [2], непосредственно функция + 12кб вложений
Доброго времени суток, случилось так, что пришлось работать с с-строками (лаба, угу), в которой нужно удалить весь текст в скобках,...

Выясните, сохраняет ли булева функция 0, 1, является ли функция линейной, монотонной, само двойственной?
Помогите пожалуйста!!! Булева функция задана вектором значений F(x)=(1001) Выясните, сохраняет ли эта функция 0, 1, является ли эта...

Какую библиотеку надо подключать чтоб работала функция _getch() и функция cin.get()?
какую библиотеку надо подключать чтоб работала функция _getch() и функция cin.get()

Функция - Pos(s,s1). Назначение - поиск первого вхождения подстроки s1 в строку s (аналогичная функция C - strstr)
Функция - Pos(s,s1). Назначение - поиск первого вхождения подстроки s1 в строку s (аналогичная функция C - strstr).Помогите плииз

Что такое функция или функция под капотом
Собственно меня очень сильно интересует этот вопрос. Функция это указатель который содержит адрес на блок памяти с кодом самой функции? Или...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru