Подписать строку с помощью HMACSHA256 - C#

Узнай цену своей работы

Формулировка задачи:

Добрый вечер Мне нужно подписать данные (строку) ключом, функцией HMACSHA256 Пользователь сам вводит строку Когда я подписываю обычные символы, всё ок - в ответе правильный хеш Если же строка содержит русские символы, то хеш неправильный Вот код:
using System;
using System.IO;
using System.Security.Cryptography;     
using System.Text;
public class Program
{
     public static void Main()
  {
    Encoding enc = Encoding.GetEncoding("ASCII");
    String key = "20f31fbce8c54800bffa5f5d767f2cf142ebcfb87ac4ab76c0c55ba7f1934481";
    String packet;
    Console.WriteLine("Input Data: ");
    packet = Console.ReadLine();
    HMACSHA256 hm = new HMACSHA256(enc.GetBytes(key));
    byte[] result = hm.ComputeHash(enc.GetBytes(packet));
    String hex = BitConverter.ToString(result);
    hex = hex.Replace("-", "");
    Console.WriteLine(hex.ToLower());
  }
}
Есть код на Python 2.7 который правильно подписывает строку с русскими символами
import hmac,hashlib
key = '20f31fbce8c54800bffa5f5d767f2cf142ebcfb87ac4ab76c0c55ba7f1934481'
packet= raw_input("Input Data:")
sig = hmac.new(key, packet, digestmod=hashlib.sha256).digest().encode("hex")
print(sig)
Пример, вводим слово: форум Правильный хеш от python: a6aa8f3d443d7e2592eea7b5c290dbe7d418c8329912b22c2e4e4c0d1ce6a18b Неправильный от c#: e5a15bb8434e7f0fb6b6ce5e63730a7d119dc14d223ffb5f48a132416948ecdf Менял различные кодировки, не работает Нужна помощь, заранее спасибо!
UPDATE: Если прописать значение в коде
HMACSHA256 hm = new HMACSHA256(Encoding.ASCII.GetBytes(key));
byte[] result = hm.ComputeHash(Encoding.UTF8.GetBytes("форум"));
Это работает. Но если ввести значение с консоли, результат неправильный. Как это исправить?

Решение задачи: «Подписать строку с помощью HMACSHA256»

textual
Листинг программы
HMACSHA256 hm = new HMACSHA256(Encoding.ASCII.GetBytes(key));
byte[] result = hm.ComputeHash(Encoding.UTF8.GetBytes("форум"));

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.125 из 5
Похожие ответы