Форум программистов, компьютерный форум, киберфорум
Криптография
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 10.03.2021
Сообщений: 9

Алгоритм хеширования SHA256

10.03.2021, 20:07. Показов 1719. Ответов 16

Студворк — интернет-сервис помощи студентам
Помогите разобраться Например есть случайная строка из 64 символов, символы это цифры 0-9 и буквы a-f. Что делает алгоритм хеширования sha256 с данной строкой? Если можно обясните шаг за шагом в подробностях сам алгоритм! Можно ли сделать обратную функцию к данной строке? Например почему из строки
ad3793e762a24abdb810994f95545ad0dab7f60c 7ef02b59c391bf68daa797c5
выходит
691a4cea3f19bcc9de50ae86e02915b5b3ea5f13 e97520153270d91cf04d8ef9

Кто-то может обяснить понятным языком как с такого выходит такое? :-)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.03.2021, 20:07
Ответы с готовыми решениями:

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

Python скрипт генерации адресов BTC + Opencl в питоне для ускорения SHA256 , Scrypt , SHA256
Суть вот в чем, есть скрипт с виду должен работать но не сверяет input c генерированными данными просто молча генерит "альфа...

Алгоритм хеширования
Надо реализовать алгоритм хеширования, работает так: all_text = "QWERTY" required_text = "QW" сначала хешируем QW, т.к. ...

16
461 / 201 / 80
Регистрация: 14.12.2017
Сообщений: 433
13.03.2021, 00:30
https://ru.wikipedia.org/wiki/SHA-2
0
0 / 0 / 0
Регистрация: 10.03.2021
Сообщений: 9
13.03.2021, 16:53  [ТС]
Та я читал но ничего не понял на моем примере показали бы что и как берется...
0
461 / 201 / 80
Регистрация: 14.12.2017
Сообщений: 433
13.03.2021, 21:41
Цитата Сообщение от slavik1981 Посмотреть сообщение
показали бы что и как берется
вот это
https://ru.wikipedia.org/wiki/... :SHA-2.svg
повторяется 64 раза.

Вам расписать все 512 значений?
1
0 / 0 / 0
Регистрация: 10.03.2021
Сообщений: 9
13.03.2021, 22:11  [ТС]
хотя бы то что повторяется 64 раза поясните один раз... там какой то не понятный рисунок со стрелками и буквами :-)
0
461 / 201 / 80
Регистрация: 14.12.2017
Сообщений: 433
13.03.2021, 23:39
Для
691a4cea3f19bcc9de50ae86e02915b5b3ea5f13 e97520153270d91cf04d8ef9
на схеме
условно можно сказать
A=691a4cea B=3f19bcc9 C=de50ae86 D=e02915b5 E=b3ea5f13 F=e9752015 G=3270d91c H=f04d8ef9

Только эти А,В... меняются каждый раз в каждом из 64 повторений схемы.

В,С,.., Н - равняются значениям на входе; только со сдвигом, тоесть В =А, С =В и т.д.
А и Е вычисляются по сложной формуле, результат которой зависит от всех А,В,С,..Н

Добавлено через 2 минуты
Вначале
Инициализация переменных
(первые 32 бита дробных частей квадратных корней первых восьми простых чисел [от 2 до 19]):
h0 := 0x6A09E667
h1 := 0xBB67AE85
h2 := 0x3C6EF372
h3 := 0xA54FF53A
h4 := 0x510E527F
h5 := 0x9B05688C
h6 := 0x1F83D9AB
h7 := 0x5BE0CD19



Инициализация вспомогательных переменных:
a := h0
b := h1
c := h2
d := h3
e := h4
f := h5
g := h6
h := h7

И это и есть А,В,С, со схемы.
А потом
S1 := (e rightrotate 6) xor (e rightrotate 11) xor (e rightrotate 25)
ch := (e and f) xor ((not e) and g)
temp1 := h + S1 + ch + k[i] + w[i]

S0 := (a rightrotate 2) xor (a rightrotate 13) xor (a rightrotate 22)
maj := (a and b) xor (a and c) xor (b and c)
temp2 := S0 + maj

h := g
g := f
f := e
e := d + temp1
d := c
c := b
b := a
a := temp1 + temp2

И так 64 раза.


В конце А,В,С,...Н
и станут равны
A=691a4cea B=3f19bcc9 C=de50ae86 D=e02915b5 E=b3ea5f13 F=e9752015 G=3270d91c H=f04d8ef9

Далее их просто записывают
и Вы получите
Цитата Сообщение от slavik1981 Посмотреть сообщение
выходит
691a4cea3f19bcc9de50ae86e02915b5b3ea5f13 e97520153270d91cf04d 8ef9
1
0 / 0 / 0
Регистрация: 10.03.2021
Сообщений: 9
14.03.2021, 02:09  [ТС]
а входная строка где у вас? (ad3793e762a24abdb810994f95545ad0dab7f60 c7ef02b59c391bf68daa7 97c5)
0
461 / 201 / 80
Регистрация: 14.12.2017
Сообщений: 433
14.03.2021, 21:01
Цитата Сообщение от slavik1981 Посмотреть сообщение
а входная строка где у вас? (ad3793e762a24abdb810994f95545ad0dab7f60 c7ef02b59c391bf68daa 7 97c5)
проще говоря примерно тут, в W:
Цитата Сообщение от On18 Посмотреть сообщение
temp1 := h + S1 + ch + k[i] + w[i]
1
0 / 0 / 0
Регистрация: 10.03.2021
Сообщений: 9
14.03.2021, 21:27  [ТС]
тоесть оно входную строку разбивает по одной букве правильно я понимаю? а что такое k[i]? а если букв у входной строке будет больше 64 что тогда?
0
461 / 201 / 80
Регистрация: 14.12.2017
Сообщений: 433
14.03.2021, 22:31
Цитата Сообщение от slavik1981 Посмотреть сообщение
по одной букве
Нет, по 32 бита.

Цитата Сообщение от slavik1981 Посмотреть сообщение
что такое k[i]?
Константы, которые всегда имеют значения
(первые 32 бита дробных частей кубических корней первых 64 простых чисел [от 2 до 311]):
k[0..63] :=
0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5, 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,
0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3, 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,
0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC, 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,
0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7, 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,
0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13, 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,
0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3, 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,
0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5, 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,
0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208, 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2


Цитата Сообщение от slavik1981 Посмотреть сообщение
а если букв у входной строке будет больше 64 что тогда?
Обрабатывает последовательно 512 бит входной строки.

Тут вы путаете:
у вас на входе ad3793e762a24abdb810994f95545ad0dab7f60c 7ef02b59c391bf68daa797c5
- строка, а не HEX.
С таким же успехом можно было записать gdshfhurgyrfeguyerervbyhwrh,
и получить 4d0e02fdfd880fc07269145f599369e57e8e6723 6ac785c1b1406e282d9ccb5e.
Или yyguew23rtubfwf524guFYRYREQgu634rfvbDF^# %DDvjkhdaufh34uyFGD$gdasfgc#^dhgh^&D#dhf j
и получить
61610ce4c28fc9df906aa653bf4d77028e5b2762 571eb9a36473a222d46b61cd/

Если
ad3793e762a24abdb810994f95545ad0dab7f60c 7ef02b59c391bf68daa797c5(hex)
то получим
411b2962ca141fdf704d2d58bfbcaa8123de9bc7 dae7579544ff95ed64e6e78e
1
0 / 0 / 0
Регистрация: 10.03.2021
Сообщений: 9
14.03.2021, 23:34  [ТС]
ну а 32 бита это и есть ASCII код одной буквы строки, правильно? А можно для строки длиной 64 символа в которой содержиться всего 16 символов (0123456789abcdef), придумать обратный алгоритм? Чтобы получить из хеша входную строку или хотя бы похожую (я знаю что может много разных таких строк давать одинаковый хеш...)
0
461 / 201 / 80
Регистрация: 14.12.2017
Сообщений: 433
15.03.2021, 00:53
Цитата Сообщение от slavik1981 Посмотреть сообщение
32 бита это и есть ASCII код одной буквы строки
Нет, 8 бит в ASCII, а не 32.

Цитата Сообщение от slavik1981 Посмотреть сообщение
А можно для строки длиной 64 символа в которой содержиться всего 16 символов (0123456789abcdef), придумать обратный алгоритм? Чтобы получить из хеша входную строку или хотя бы похожую
Да. Только практического применения такой затеи будет 0
0
0 / 0 / 0
Регистрация: 10.03.2021
Сообщений: 9
15.03.2021, 01:43  [ТС]
тоесть входная строка берется по 4 буквы, это 16 повторений... а остальное 48 нулями заполняется?

почему 0? Я найду применение :-)
0
461 / 201 / 80
Регистрация: 14.12.2017
Сообщений: 433
15.03.2021, 12:38
Цитата Сообщение от slavik1981 Посмотреть сообщение
тоесть входная строка берется по 4 буквы
Нет, по 512 байт, сколько это букв, думаю переведете самостоятельно.
Эти 512 байт делятся по 32 байта, которые вписываются в w[0..15] (16 шт. W)
1
0 / 0 / 0
Регистрация: 10.03.2021
Сообщений: 9
15.03.2021, 17:13  [ТС]
Масив входной строки имеет 16 элементов а цикл повторяется 64 раза как такое может быть?

как делиться входная строка напишите подробней? Например ad3793e762a24abdb810994f95545ad0dab7f60c 7ef02b59c391bf68daa7 97c5 что будет в масиве w[0..15]?

Добавлено через 2 часа 0 минут
так 512 и 32 байт или бит?
0
461 / 201 / 80
Регистрация: 14.12.2017
Сообщений: 433
15.03.2021, 17:43
Цитата Сообщение от slavik1981 Посмотреть сообщение
Масив входной строки имеет 16 элементов а цикл повторяется 64 раза как такое может быть?
Цитата Сообщение от slavik1981 Посмотреть сообщение
32 байт или бит?
Далее сообщение обрабатывается последовательными порциями по 512 бит:
разбить сообщение на куски по 512 бит
для каждого куска
разбить кусок на 16 слов длиной 32 бита (с порядком байтов от старшего к младшему внутри слова): w[0..15]

Сгенерировать дополнительные 48 слов:
для i от 16 до 63
s0 := (w[i-15] rotr 7) xor (w[i-15] rotr 18) xor (w[i-15] shr 3)
s1 := (w[i-2] rotr 17) xor (w[i-2] rotr 19) xor (w[i-2] shr 10)
w[i] := w[i-16] + s0 + w[i-7] + s1
https://ru.wikipedia.org/wiki/SHA-2
0
0 / 0 / 0
Регистрация: 10.03.2021
Сообщений: 9
15.03.2021, 18:09  [ТС]
Та ну его.... голову ломать :-) не понимаю я и все.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.03.2021, 18:09
Помогаю со студенческими работами здесь

Алгоритм хеш функции SHA256. Разбор кода
Найден в интернете код алгортима SHA256, помогите разобраться в коде, что подается на вход, где начало и т.д.. Как переделать в...

Алгоритм крипто-хеширования
Напишите программу на языке Python, в которой реализован алгоритм крипто-хеширования. В программе должны быть функция hash, в которых вы...

Алгоритм хеширования паролей в Joomla 3.4.3
Пытаюсь сделать проверку пароля в Joomla 3.4.3 из своего скрипта. Для себя обнаружил странный алгоритм хеширования паролей в Joomla. В базе...

Реализовать алгоритм хеширования с закрытым значением
Здраствуйте, как можно реализовать адгоритм хеширования из закрітім значением, которій равен константе? В интернете что-то не ...

Как реализовать алгоритм хеширования N-hash
Здравствуйте не могли бы мне помочь реализовать алгоритм хеширования N-hash на visual c# вот я пытаюсь сделать но не могу разобраться с...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru