Answers to Questions

How to calculate/encode a hash?

The hash functions use computer data (in binary format) and apply nonlinear and non-reversible functions with a strong avalanche effect (the result is very different even if the input data is very similar). The fingerprint is usually returned as hexadecimal characters.

Example: dCode has for hash MD5 e9837d47b610ee29399831f917791a44

Example: dCode has for hash SHA1 15fc6eed5ed024bfb86c4130f998dde437f528ee

Example: dCode has for hash SHA256 254cd63ece8595b5c503783d596803f1552e0733d02fe4080b217eadb17711dd

See the dCode pages for each hash function to know how it works in detail: MD5, SHA1, SHA256, etc.

How to decrypt a hash?

The principle of hashing is not to be reversible, there is no decryption algorithm, that’s why it is used for storing passwords: it is stored encrypted and not decryptable.

Example: 123+456=579, from 579 how to find 123 and 456? This is not possible except by trying all possible combinations.

The hash functions apply millions of non-reversible operations so that the input data can not be retrieved.

Hash functions are created to not be decrypable, their algorithms are public. The only way to decrypt a hash is to know the input data.

What are rainbow tables?

Theoretically, by testing all input bit strings (all passwords for example), it is possible to store all the results in a dictionary. dCode uses its word and passwords databases already pre-calculated hash. These dictionaries are called rainbow tables.

It is therefore possible to test all the possible words in a dictionary to check if their fingerprint is the one sought.

If the word is not in the dictionary, then there will be no result.

How to recognize a hash?

A hash can take many forms, but the most common are hexadecimal strings: 32 characters 0123456789abcdef for the MD5, 40 for the SHA-1, 64 for the SHA-256, etc.

The encoding system based on bcrypt uses the symbol $ followed by a number indicating the algorithm used and its possible parameters.

What is a salt (for a hash)?

The rainbow tables (gigantic databases of hash and password matches) are growing day by day and accumulating passwords stolen from various sites, and taking advantage of the computational performance of super calculators, allow today to decipher short passwords in minutes / hours.

In order to counter this technique, it is recommended to add salt (some characters in prefix or suffix) to the password/message. In this way, the precalculated tables must again be calculated to account for the salt that systematically modifies all the fingerprints, the salting step.

Example: MD5 (dCode) = e9837d47b610ee29399831f917791a44 and MD5 (dCodeSUFFIX) = 523e9a80afc1d2766c3e3d8f132d4991

What is a cost (for a hash)?

Cost is the measure of the resources needed to calculate a hash. In order to complicate the task of creating the rainbow tables, it is possible to complicate some hashes so that the calculations take several milliseconds or seconds, which makes the duration necessary for the attacks too great to be applicable.

What is bcrypt?

bcrypt is a library of cryptographic functions that applies recursion rules to hash functions. Natively, the notions of salt and cost are applicable.

Ask a new question

Примеры использования Править

С помощью MD5 проверяют целостность скачанных файлов — так, некоторые программы идут вместе со значением хеша. Например, диски для инсталляции.

Многие системы используют базу данных для хранения паролей и существует несколько способов для хранения паролей.

  1. Пароли хранятся как есть. При взломе такой базы все пароли станут известны.
  2. Хранятся только хеши паролей (с помощью MD5, SHA). Найти пароли можно только полным перебором. Но сейчас такая задача решается за доли секунды. Пароль из таблицы был найден всего за 0,036059 сек.
  3. Хранятся хеши паролей и несколько случайных символов. К каждому паролю добавляется несколько случайных символов и результат ещё раз хешеруется. Например, md5(md5(pass)+word). Найти пароль с помощью таблиц таким методом не получится.
Пример базы данных
способ id login password
1 5 anton mydata
2 5 anton 69380a4489890f8a53e0eddc36cd1379
3 5 anton md5(md5(mydata)+word) и word

Существует несколько надстроек над MD5 для усиления криптостойкости.

  • MD5 (HMAC) — HMAC — Keyed-Hashing for Message Authentication (хеширование с ключом для аутентификации сообщения) — алгоритм позволяет хешировать входное сообщение L с некоторым ключём K, такое хеширование позволяет аутентифицировать подпись.
  • MD5 (Unix) — алгоритм вызывает тысячу раз стандартный MD5.

MD5 Explained

What is MD5?

MD5 is a message-digest algorithm. It’s used to compute a hash value in cryptography. So what’s an hash function then? Simply put, a hash function takes a block of data and returns a fixed-size bit string (hash value). The data used by hash functions is referred to as a «message», while the computed hash value is referred to as the «message digest».

When to use MD5?

MD5, like other hash functions, is used in digital signatures, message authentication codes, to index data in hash tables, for finger-printing, to detect duplicate data, uniquely identify files, and as checksums to detect accidental data corruption.

How can I decrypt MD5?

You can’t! MD5 is NOT an encryption algorithm! A lot of people are under the impression that MD5 encrypts data. It does no such thing. All it does is compute a hash value for a given set of data.

How do I reverse MD5?

You can’t! MD5 is NOT reversible. Hash functions are used as one-way methods. They take the data (messages) and compute hash values (digests). The inverse can’t be done. To better explain why a MD5 is NOT reversible, here’s very simple example: Using MD5 on text data of 750,000 characters, we obtain a mere 32 digits digest. Now if I wanted to revert this, how could I possibly determine with exactitude which 750,000 characters were used from just 32 digits?!? This would be the BEST compression algorithm in the world 😛

What about possible collisions?

To get a collision, on average, you’ll need to hash about 6 billion files per second for 100 years. Read about the Birthday Paradox to know more.

What are rainbow tables and why should I care?

Rainbow tables are reverse-hash lookup tables. Because MD5 computes the same hash value for a given message, it’s fairly easy to use brute force to lookup a value. For example, one could precompute the digest of all 8 characters alpha-numeric combinations and they could then scan a password table to see which password corresponds to which digest. This is one of the reason why you should use a salt to compute your password digest.

People say MD5 is not secure, is that true?

MD5 was proven to be non-collision resistant. BUT it really depends on where and how you use it. If you intend to use MD5 as a simple checksum algorithm or for a unique constraint on a database table, it’ll work perfectly. MD5 is compact (only 32 digits!), therefore inexpensive on storage, and is also crazy fast to compute. Just avoid using MD5 for password digests or other HIGHLY critical security systems. There are LOTS of security guideline on the web to help you out. If you are unsure about using MD5, you can try SHA-256 instead.

Свойства хеша

Алгоритм шифрования MD5 предназначен для осуществления процессов преобразования информации, имеющей разную длину системного кода, который состоят из тридцати двух шестнадцатеричных значений. Также существуют нюансы, благодаря которым пользователь получает гарантии безопасности, исключается возможность атаки, изменение, похищения информации. Например, при использовании разных первоначальных данных хеши разные.

Функция должна быть открыта для исследования ее криптоустойчивости. Хеш создан, чтобы односторонне скрыть файлы, то есть она не предназначена для декодировки. В целях шифрования данных, не требуется мощных ресурсов.

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

Как расшифровать MD5-хэш самому?

Некоторые пользователи пытаются расшифровать хэш-код самостоятельно. Но, как оказывается, сделать это достаточно проблематично. Для упрощения такой процедуры лучше использовать узконаправленные утилиты, среди которых явно выделяются следующие программы:

  • PasswordPro.
  • John the Ripper.
  • Cain & Abel.
  • «Штирлиц» и др.

Первые две программы предназначены для вычисления простейших комбинаций путем подстановки элементарных сочетаний вроде 1212121.

Третья вроде бы и может расшифровать MD5-хэш, но делает это слишком медленно. Однако ее преимущество состоит в том, что она имеет в комплекте генератор таблиц, хотя непосвященный пользователь с этим вряд ли разберется.

«Штирлиц» — приложение весьма интересное, но оно использует слишком ограниченное число алгоритмов вычислений, среди которых наиболее значимыми являются такие как BtoA, uuencode, base64, xxencode и binhex.

Если уж та то пошло, нужно использовать утилиту брута BarsWF, которая является наиболее быстрой из всех известных и в большинстве случаев может расшифровать MD5-хэш (пароль, если он есть, тоже может быть приведен в искомый вид), оперируя миллиардами вычислений хэша в секунду. Однако даже с применением всех этих программных средств следует учитывать еще и тот момент, что, кроме основного алгоритма, MDA5-кодирование может производиться одновременно и с применением MD4 или IM.

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

Проблемы надежности MD5

Казалось бы, такая характеристика MD5 должна обеспечивать 100% гарантии неуязвимости и сохранения данных. Но даже этого оказалось мало. В ходе проводимых исследований учеными был выявлен целый ряд прорех и уязвимостей в этом уже распространенном на тот момент алгоритме. Основной причиной слабой защищенности MD5 значится относительно легкое нахождение коллизий при шифровании.

Под коллизией понимают возможность получения одинакового результата вычислений хеш-функции при разных входных значениях.

Проще говоря, чем больше вероятность нахождения коллизий, тем надежность используемого алгоритма ниже. Вероятность нахождения коллизий при шифровании более надежными хеш-функциями практически сводится к 0.

То есть большая вероятность расшифровки паролей MD5 значится основной причиной отказа от использования этого алгоритма. Многие криптологи (специалисты по шифрованию данных) связывают низкую надежность MD5 с малой длиной получаемого хеш-кода.

Область применения алгоритма хеширования:

  • Проверка целостности файлов, полученных через интернет – многие инсталляционные пакеты прог снабжены хеш-кодом. Во время активации приложения его значение сравнивается со значением, расположенным в базе данных разработчика;
  • Поиск в файловой системе продублированных файлов – каждый из файлов снабжен своим хеш-кодом. Специальное приложение сканирует файловую систему компа, сравнивая между собой хеши всех элементов. При обнаружении совпадения утилита оповещает об этом пользователя или удаляет дубликат. Одной из подобных прог значится Duplifinder:
  • Для хеширования паролей – в семействе операционных систем UNIX каждый юзер системы имеет свой замечательный пароль, для защиты которого используется хеширование на основе MD5. Некоторые системы на основе Линукс также пользуются этим методом шифрования паролей.

How to validate MD5 passwords?


The MD5 algorithm is very fastSo you can use it where you want, without slow down your website

That’s why we were using MD5 to store passwords in databaseAnd so to validate them, you can encrypt the input password, and check it with the database one

The pseudo-code will look like this:

I’ll show you in the next paragraph how to manage the two steps with PHP

Create a user account

The first step is to create a user accountTo do this, you need to create a database, with at least two fields: user name and password

For example, in MySQL, you can create something like this:

The password will be MD5 encrypted, so it will always be 32 characters length

To create a new user with PHP, you have to do something like that:

You probably already done that, you just need to use the md5() function to encrypt the passwordI recommend using salt with MD5 but it’s not mandatory to understand the process

Obviously, before that, you need to connect to your MySQL database server, probably clean the $_POST data, and create a form in HTML to register the userBut we are not here for a basic PHP lesson

Validate the user password

Then come the part you didn’t know before reading this articleIn the login process, you need to compare the input password to the database password

Here is what you can do:

So again, we’ll use the md5() function to encrypt the password before login the userSo we can check that the input password is the same than in the database

At no time is it necessary to decrypt the password stored in the database

Криптоанализ Править

На данный момент существуют несколько видов «взлома» хешей MD5 — подбора сообщения с заданным хешем:

  • Перебор по словарю
  • RainbowCrack

RainbowCrack — новый вариант взлома хеша. Он основан на генерировании большого количества хешей из набора символов, и потом по этой базе можно вести поиск заданного хеша. Хотя генерация хешей занимает недели, зато последующий взлом производится за считанные минуты. Rainbow-таблицы можно найти, а можно сгенерировать самому.

Коллизия хеш-функции — это получение одинакового значения функции для разных сообщений и идентичного начального буфера. Природа таких коллизий кроется в размере хеша. При своей длине в 128 бит, он имеет $ 2^{128} $ различных дайджестов и для сообщений большей длины чем 128, коллизии просто неизбежны. Существуют еще так называемые псевдоколлизии, когда для разного значения начального буфера получаются одинаковые значения хеша, при этом сообщения могут совпадать или отличаться. Вскоре после создания алгоритма такие коллизии были обнаружены.

A = 0x12AC2375
В = 0x3B341042
C = 0x5F62B97C
D = 0x4BA763ED

и задать входное сообщение

AA1DDABE D97ABFF5 BBF0E1C1 32774244
1006363E 7218209D E01C136D 9DA64D0E
98A1FB19 1FAE44B0 236BB992 6B7A779B
1326ED65 D93E0972 D458C868 6B72746A

то, добавляя число $ 2^9 $ к определенному 32-разрядному слову в блочном буфере, можно получить второе сообщение с таким же хешем. Ханс Доббертин представил такую формулу: $ L2_i=\left\{\begin{matrix} L1_i, i < 16, i!=14; \\L1_i + 2^9, i = 14. \end{matrix}\right. $

Тогда MD5(IV, L1) = MD5(IV, L2) = BF90E670752AF92B9CE4E3E1B12CF8DE.

d131dd02c5e6eec4693d9a0698aff95c 2fcab58712467eab4004583eb8fb7f89
55ad340609f4b30283e488832571415a 085125e8f7cdc99fd91dbdf280373c5b
d8823e3156348f5bae6dacd436c919c6 dd53e2b487da03fd02396306d248cda0
e99f33420f577ee8ce54b67080a80d1e c69821bcb6a8839396f9652b6ff72a70


d131dd02c5e6eec4693d9a0698aff95c 2fcab50712467eab4004583eb8fb7f89
55ad340609f4b30283e4888325f1415a 085125e8f7cdc99fd91dbd7280373c5b
d8823e3156348f5bae6dacd436c919c6 dd53e23487da03fd02396306d248cda0
e99f33420f577ee8ce54b67080280d1e c69821bcb6a8839396f965ab6ff72a70

Каждый их этих блоков дает MD5 хеш равный 79054025255fb1a26e4bc422aef54eb4.

Метод Сяоюнь Вана и Хунбо Ю Править

позволяет для заданного инициализирующего вектора найти две пары $ M,M’ $ и $ N,N’ $, такие что $ f(f(s,M),M’)=f(f(s,N),N’) $

Важно отметить, что этот метод работает для любого инициализирующего вектора, а не только для вектора используемого по стандарту.. Применение этой атаки к MD4 позволяет найти коллизию меньше чем за секунду

Она также применима к другим хеш-функциям, таким как RIPEMD и HAVAL.

Применение этой атаки к MD4 позволяет найти коллизию меньше чем за секунду. Она также применима к другим хеш-функциям, таким как RIPEMD и HAVAL.

Алгоритм MD5 Править

На вход алгоритма поступает входной поток данных, хеш которого необходимо найти. Длина сообщения может быть любой (в том числе нулевой). Запишем длину сообщения в L. Это число целое и не отрицательное. Кратность каким-либо числам не обязательна. После поступления даных идет процесс подготовки потока к вычислениям.

Ниже приведены 5 шагов алгоритма:

Шаг 1. Выравнивание потока Править

Входные данные выравниваются так, чтобы их размер был сравним с 448 по модулю 512 (L’ = 512 × N + 448). Сначала дописывают единичный бит в конец потока, затем необходимое число нулевых бит (выравнивание происходит, даже если длина уже конгруэнтна — сравнима с 448).

Шаг 2. Добавление длины сообщения Править

В оставшиеся 64 бита дописывают 64-битное представление длины данных до выравнивания. Если длина превосходит $ 2^{64}-1 $, то дописывают только младшие биты. После этого длина потока станет кратной степеням двойки — 16, 32. Вычисления будут основываться на представлении этого потока данных в виде массива слов по 512 бит.

Шаг 3. Инициализация буфера Править

Для вычислений инициализируются 4 переменных размером по 32 бита и задаются начальные значения шестнадцатеричными числами:

А = 01 23 45 67;
В = 89 AB CD EF;
С = FE DC BA 98;
D = 76 54 32 10.

В этих переменных будут храниться результаты промежуточных вычислений. Начальное состояние ABCD называется инициализирующим вектором.

Определим еще функции и константы, которые нам понадобятся для вычислений.

Потребуются 4 функции для четырех раундов. Введем функции от трех параметров — слов, результатом также будет слово.

1 раунд $ Fun F(X,Y,Z) = (X\wedge{Y}) \vee (\neg{X} \wedge{Z}) $.
2 раунд $ Fun G(X,Y,Z) = (X\wedge{Z}) \vee (\neg{Z} \wedge{Y}) $.
3 раунд $ Fun H(X,Y,Z) = X \oplus Y \oplus Z $.
4 раунд $ Fun I(X,Y,Z) = Y \oplus (\neg{Z} \vee X) $.
  • Определим таблицу констант T — 64-элементная таблица данных, построенная следующим образом: $ T=int(4294967296*|sin(i)|) $ и s — циклический сдвиг влево на s бит полученого 32-битного аргумента.
  • Выравненные данные разбиваются на блоки (слова) по 32 бита, и каждый блок проходит 4 раунда из 16 операторов. Все операторы однотипны и имеют вид: , определяемый как $ a = b + ((a + Fun(b, c, d) + X + T) <<< s) $, где X — блок данных. X = M , где k — номер 32-битного слова из n-го 512-битного блока сообщения.

Шаг 4. Вычисление в цикле Править

Заносим в блок данных элемент n из массива. Сохраняются значения A, B, C и D, оставшиеся после операций над предыдущими блоками (или их начальные значения, если блок первый).

AA = A
BB = B
CC = C
DD = D

Раунд 1

/* a = b + ((a + F(b,c,d) + X + T) <<< s). */

Раунд 2

/* a = b + ((a + G(b,c,d) + X + T) <<< s). */

Раунд 3

/* a = b + ((a + H(b,c,d) + X + T) <<< s). */

Раунд 4

/* a = b + ((a + I(b,c,d) + X + T) <<< s). */

Суммируем с результатом предыдущего цикла:

A = AA + A
B = BB + B
C = CC + C
D = DD + D

После окончания цикла необходимо проверить, есть ли еще блоки для вычислений. Если да, то изменяем номер элемента массива (n++) и переходим в начало цикла.

Шаг 5. Результат вычислений Править

Результат вычислений находится в буфере ABCD, это и есть хеш. Если вывести слова в обратном порядке DCBA, то мы получим наш MD5 хеш.

Сравнение MD5 и MD4 Править

Алгоритм MD5 происходит от MD4. В новый алгоритм добавили еще один раунд, теперь их стало 4 вместо 3 в MD4. Добавили новую константу для того, чтобы свести к минимуму влияние входного сообщения, в каждом раунде на каждом шаге и каждый раз константа разная, она суммируется с результатом F и блоком данных. Изменилась функция G = XZ v (Y not(Z)) вместо (XY v XZ v YZ). Результат каждого шага складывается с результатом предыдущего шага, из-за этого происходит более быстрое изменение результата. Изменился порядок работы с входными словами в раундах 2 и 3.

Различия в скорости работы представлены в таблице:

Таблица сравнения скоростей
RFC 2,614 сек 37359 Кб/сек 2,574 сек 37940 Кб/сек
OpenSSL 1,152 сек 84771 Кб/сек 0,891 сек 109603 Кб/сек

Проблемы надежности MD5

Такая технология, являясь весьма надежной, не идеальна на 100 %. Она не является совсем неуязвимой и не гарантирует абсолютную неприкосновенность данных. Ученые на настоящий момент выявили ряд недостатков такого алгоритма. В основном, он становится уязвимым по причине легкого обнаружения коллизии в процессе шифрования.

Коллизия – это возможность достичь одинакового итогового значения хеша при вводе абсолютно разных данных на входе. Таким образом, чем выше будет возможность совпадения, тем менее защищенным является алгоритм. Криптоанализ, проведенный учеными, показал, что в настоящее время существуют разнообразные возможности взлом хеша MD5. Это такие способы, как:

  • подбор подходящих вариантов с известным хешем;
  • словарный поиск;
  • метод поиска коллизий;
  • «силовой удар»;
  • RainbowCrack.

Атака «Полного перебора» является универсальным типом взлома, однако она является очень долгой. Для того чтобы избежать подобного взлома, необходимо увеличить объем ключей. Текущий метод используется как показатель устойчивости и надежности шифрования данных. RainbowCrack является специальной программой, создающей базу хеш, на основе которой практически мгновенно происходит взлом любого пароля, состоящего из букв и цифр.

Способ подбора при помощи словаря используются готовые программы и словарные базы. Атака при помощи коллизий предполагает использование аналогичного значения функции для абсолютно различных сообщений, но начинающихся одинаково. Этот метод стал известен в конце прошлого века.

Здесь, формула получения идентичного хеш-кода следующая: MD5(4L1) = MD5(4L2). Затем в 2004 году китайские исследователи рассказали о том, что нашли в системе уязвимое место, которое позволяет за небольшой промежуток времени обнаружить коллизию. И наконец в 2006 году создан способ находить вредные файлы на обычном пользовательском компьютере при помощи своеобразных «туннелей».

Source code

dCode retains ownership of the online ‘Hash Function’ tool source code. Except explicit open source licence (indicated CC / Creative Commons / free), any algorithm, applet or snippet (converter, solver, encryption / decryption, encoding / decoding, ciphering / deciphering, translator), or any function (convert, solve, decrypt / encrypt, decipher / cipher, decode / encode, translate) written in any informatic language (PHP, Java, C#, Python, Javascript, Matlab, etc.) no data, script or API access will be for free, same for Hash Function download for offline use on PC, tablet, iPhone or Android !

Answers to Questions

How to encrypt a character string using SHA256?

SHA256 encryption computes a 256-bit or 32-byte digital fingerprint, whose hexadecimal writing consists of 64 characters. The algorithm uses non-linear functions such as:

$$ \operatorname{Ch}(E,F,G) = (E \wedge F) \oplus (\neg E \wedge G) $$

$$ \operatorname{Ma}(A,B,C) = (A \wedge B) \oplus (A \wedge C) \oplus (B \wedge C) $$

$$ \Sigma_0(A) = (A\!\ggg\!2) \oplus (A\!\ggg\!13) \oplus (A\!\ggg\!22) $$

$$ \Sigma_1(E) = (E\!\ggg\!6) \oplus (E\!\ggg\!11) \oplus (E\!\ggg\!25) $$

and also 64 constants: 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

Example: dCode has for hash 254cd63ece8595b5c503783d596803f1552e0733d02fe4080b217eadb17711dd

SHA-256 encryption is a hash, which means that it is one-way and can not be decrypted.

How to decrypt SHA256 cipher?

Since SHA256 is a hash based on non-linear functions, there is no decryption method.

dCode uses word databases whose hash has already been calculated (several million potential passwords) and checks if the hash is known. If it is not known or combined with salting the decryption will probably fail.

How to recognize SHA256 ciphertext?

The hash is composed of 64 hexadecimal characters 0123456789abcdef (ie 256 bits)

The SHA256 algorithm is used by blockchain and validation of Bitcoin transactions, any reference is a clue.

Ask a new question

С этим читают