2017-01-12 5 views
0

Как я могу расшифровать зашифрованную строку HMAC SHA256?HMAC SHA256 расшифровать строку в C#

private string CreateToken(string message, string secret) 
    { 
     secret = secret ?? ""; 
     var encoding = new System.Text.ASCIIEncoding(); 
     byte[] keyByte = encoding.GetBytes(secret); 
     byte[] messageBytes = encoding.GetBytes(message); 
     using (var hmacsha256 = new HMACSHA256(keyByte)) 
     { 
     byte[] hashmessage = hmacsha256.ComputeHash(messageBytes); 
     return Convert.ToBase64String(hashmessage); 
     } 
    } 

Как я могу сделать обратное проектирование, если у меня есть результирующая строка?

Заранее спасибо.

+2

Нет, это не обратимо, как и все формы криптографического хеширования. –

+0

Вы можете получить дополнительную информацию, если вы посмотрите здесь http://security.stackexchange.com/questions/34219/is-it-possible-to-get-the-encryption-key-when-you-have-the-plaintext – sedevel

ответ

4

Хэш - это односторонняя функция, по определению она не обратима. Что вы пытаетесь достичь?

Если это что-то похожее на сравнение паролей, то просто хеш-пароль, который у вас есть, а затем сравните полученные хеши. Без какого-либо дальнейшего контекста трудно сказать.

+0

Не совсем _one-way_, потому что в некоторых случаях вы можете использовать ожидаемый результат. –

+0

Если вы используете хэш, который может быть грубым, то вам нужно спросить, почему вы его используете в первую очередь. Как и при обесценении SHA1. Если вы хотите, чтобы я пояснил, что цель хэша - это односторонняя функция. –

+0

@ m.rogalski Perthaps «bruteforce» - не правильный термин. Можно попробовать заподозренные ценности, но на самом деле это не «грубая сила». – zaph

1

HMACSHA256: Это хэш-аутентификация на основе сообщений code.It используется для проверки целостности сообщения о незащищенном channel.It является вперед только алгоритмом хеширования, он не может быть расшифрован. Он хэширует сообщение на основе общего секретного ключа, который известен обеим сторонам (отправителю и получателю) .Сендер использует общий секрет и вычисляет хеш-значение из исходных данных и отправляет как исходные данные, так и хеш-значение, а затем ретранслирует ресивер хэш-значение из исходных данных. Если оба хеш-значения совпадают, это означает, что в исходных данных не было отсрочено, если они не совпадают, это означает, что в исходных данных для закаленного сценария завершена проверка.

+0

Понятно объяснено, но требуется проверка орфографии/грамматики. – Nair

Смежные вопросы