Подписать строку с помощью HMACSHA256 - C#
Формулировка задачи:
Добрый вечер
Мне нужно подписать данные (строку) ключом, функцией HMACSHA256
Пользователь сам вводит строку
Когда я подписываю обычные символы, всё ок - в ответе правильный хеш
Если же строка содержит русские символы, то хеш неправильный
Вот код: Есть код на Python 2.7 который правильно подписывает строку с русскими символами Пример, вводим слово: форум
Правильный хеш от python: a6aa8f3d443d7e2592eea7b5c290dbe7d418c8329912b22c2e4e4c0d1ce6a18b
Неправильный от c#: e5a15bb8434e7f0fb6b6ce5e63730a7d119dc14d223ffb5f48a132416948ecdf
Менял различные кодировки, не работает
Нужна помощь, заранее спасибо!
Это работает.
Но если ввести значение с консоли, результат неправильный. Как это исправить?
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()); } }
import hmac,hashlib key = '20f31fbce8c54800bffa5f5d767f2cf142ebcfb87ac4ab76c0c55ba7f1934481' packet= raw_input("Input Data:") sig = hmac.new(key, packet, digestmod=hashlib.sha256).digest().encode("hex") print(sig)
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("форум"));
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д