Хеширование и расшифровка md5 хеш-кода

Что такое хеши и как они используются

Хеш-сумма (хеш, хеш-код) — результат обработки неких данных хеш-функцией (хеширования).

Хеширование, реже хэширование (англ. hashing) — преобразование массива входных данных произвольной длины в (выходную) битовую строку фиксированной длины, выполняемое определённым алгоритмом. Функция, реализующая алгоритм и выполняющая преобразование, называется «хеш-функцией» или «функцией свёртки». Исходные данные называются входным массивом, «ключом» или «сообщением». Результат преобразования (выходные данные) называется «хешем», «хеш-кодом», «хеш-суммой», «сводкой сообщения».

Это свойство хеш-функций позволяет применять их в следующих случаях:

  • при построении ассоциативных массивов;
  • при поиске дубликатов в сериях наборов данных;
  • при построении уникальных идентификаторов для наборов данных;
  • при вычислении контрольных сумм от данных (сигнала) для последующего обнаружения в них ошибок (возникших случайно или внесённых намеренно), возникающих при хранении и/или передаче данных;
  • при сохранении паролей в системах защиты в виде хеш-кода (для восстановления пароля по хеш-коду требуется функция, являющаяся обратной по отношению к использованной хеш-функции);
  • при выработке электронной подписи (на практике часто подписывается не само сообщение, а его «хеш-образ»);
  • и др.

Одним из применений хешов является хранение паролей. Идея в следующем: когда вы придумываете пароль (для веб-сайта или операционной системы) сохраняется не сам пароль, а его хеш (результат обработки пароля хеш-функцией). Этим достигается то, что если система хранения паролей будет скомпрометирована (будет взломан веб-сайт и злоумышленник получит доступ к базе данных паролей), то он не сможет узнать пароли пользователей, поскольку они сохранены в виде хешей. Т.е. даже взломав базу данных паролей он не сможет зайти на сайт под учётными данными пользователей. Когда нужно проверить пароль пользователя, то для введённого значения также рассчитывается хеш и система сравнивает два хеша, а не сами пароли.

По этой причине пентестер может столкнуться с необходимостью работы с хешами. Одной из типичных задач является взлом хеша для получения пароля (ещё говорят «пароля в виде простого текста» — поскольку пароль в виде хеша у нас и так уже есть). Фактически, взлом заключается в подборе такой строки (пароля), которая будет при хешировании давать одинаковое значение со взламываемым хешем.

Для взлома хешей используется, в частности, Hashcat. Независимо от выбранного инструмента, необходимо знать, хеш какого типа перед нами.

QuickHash

QuickHash — это генератор хэшей с открытым исходным кодом для Windows, macOS и Linux. Это также одна из наиболее полнофункциональных систем создания хэшей и проверки их правильности в этом списке.

Хотя количество хэшей, которые вы можете использовать, небольшое, просто MD5, SHA1, SHA256, SHA512, и xxHash64, но Quick Hash имеет массу дополнительных функций.

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

Скачать: QuickHash для Windows | macOS | Linux (Debian)

В чем измеряется хешрейт?

Хешрейт это переменная величина ее числовое значение выражается количеством хеш (h) в секунду. Для поиска нужно хеш-кода выполняется тысячи, миллионы и миллиарды вычислений. Расшифровка основных показателей хешрейта устройств:

  • Килохеш (kH/s) – 1000 H/s;
  • Мегахеш (MH/s) – 1000 kH/s;
  • Гигахеш (GH/s) – 1000 MH/s;
  • Террахеш (TH/s) – 1000 GH/s;
  • Петахеш (PH/s) – 1000 TH/s;
  • Эксахеш (EH/s) – 1000 PH/s.

Такое же соотношение действует для единицы измерения sol, используемой в криптосетях, работающих на алгоритме Equihash. В блокчейн экосистеме Bitcoin hashrate большинство пулов для коллективного майнинга измеряется в петахеш и эксахеш. А в целом хешрейт сети биткоин равен 114,23 EH/s

Литература

Используемая для подготовки данной статьи литература:

  • https://www.harmj0y.net/blog/redteaming/operational-guidance-for-offensive-user-dpapi-abuse/ (в этой статье много ссылок на очень хорошие статьи по данной теме)
  • https://ired.team/offensive-security/credential-access-and-credential-dumping/reading-dpapi-encrypted-secrets-with-mimikatz-and-c++
  • https://www.synacktiv.com/ressources/univershell_2017_dpapi.pdf
  • http://2018.offzone.moscow/getfile/?bmFtZT0xMi0wMF9XaW5kb3dzX0RQQVBJX1Nla3JldGlraS5wZGYmSUQ9NDEy
  • https://github.com/gentilkiwi/mimikatz/wiki/howto-~-credential-manager-saved-credentials
  • https://github.com/gentilkiwi/mimikatz/wiki/howto-~-decrypt-EFS-files

Пароль Cisco тип 7

Этот тип пароля использует шифр Виженера, который, по сути, представляет собой простое шифрование с алфавитной подстановкой. Алгоритм обратимый, поэтому его можно мгновенно преобразовать в простой текст без необходимости взлома.

В следующем примере показан пароль типа 7, найденный в конфигурации Cisco:

username admin privilege 15 password 7 0236244818115F3348

Расшифровать пароль Cisco типа 7

Существует ряд бесплатных инструментов для расшифровки пароля типа 7. Вот некоторые из них:

  • https://www.question-defense.com/2011/08/17/perl-script-to-decode-cisco-type-7-password-hash
  • https://gist.github.com/jayswan/1927995
  • https://github.com/theevilbit/ciscot7

Вот, как расшифровать указанный выше пароль типа 7 с помощью скрипта Ciscot7 Python:

wget https://raw.githubusercontent.com/theevilbit/ciscot7/master/ciscot7.py
python ciscot7.py -d -p 0236244818115F3348

Мы сразу видим, что пароль .

В сеть можно найти множество инструментов для расшифровки паролей этого типа.

Простые примеры

Ниже рассмотрим пример использования hashcat на хэше MD5.

1 – Список слов
В этом примере произведем перебор по произольному списку слов в качестве паролей из файла

-a 0 — атака по словарю
-m 0 — тип алгоритма MD5
-w 4 — профиль производительности
-o cracked.txt — это файл, в который будут записаны найденные пароли
hash.txt — файл в хэшами (каждый с новой строки)
custom_list.txt — словарь, по которому будет сделан перебор (каждое слово с новой строки)

После нахождения нужного хэша hashcat напишет нам Cracked и в файле cracked.txt мы увидим запись «хэш:пароль».

2 – Список слов + правила

3 – Словарь/список слов

4 – Словарь/список слов + правила

5 – Произвольный список слов + правила
Добавьте все вновь обнаруженные пароли в свой пользовательский список слов и снова запустите атаку с перестановкой правила, учитывая любые другие вариации, просто используя echo или awk, чтобы добавить новое правило, а затем используйте вышеприведенную команду.

6 – По маске
Так мы можем начать перебор по маске, котрая описана в файле rockyou-1-60.hcmask, учитывая длину и паттерны.

7 – Гибридный словарь + маска
Используя словарь, делайте гибридные атаки, ища больше вариаций общих слов или известных паролей, добавляя/удаляя маски к этим кандидатам.

или

8 – Пользовательский список слов + правила
Добавьте все обнаруженные пароли обратно в свой пользовательский список слов и снова запустите атаку с правилами перестановки, предлагающими любые другие вариации.

9 – Комбо
Используя собственный словарь, выполните комбинированную атаку, индивидуально сопоставляя кандидатов и словарь вместе, чтобы сформировать новых кандидатов.

10 – Произвольная гибридная атака
Добавьте все обнаруженные пароли обратно в свой пользовательский список слов и выполните гибридную атаку.

11 – Атака по произвольной маске
Простые и слабые пароли хорошо поддаются взлому, но не все. Создайте пользовательскую маску на основе Ваших текущих взломанных паролей.

12 – Брутфорс (BRUTE-FORCE)
Когда Вы уже препробывали все, что описано выше, остается «грубая сила» Обычно, при брутфорсе подбирать пароль больше 8 символов бессысмленно из-за аппаратных возможностей.

Используйте следующие наборы символов, чтобы взломать свой хэш:

?l = abcdefghijklmnopqrstuvwxyz (строчные)
?u = ABCDEFGHIJKLMNOPQRSTUVWXYZ(заглавные)
?d = 0123456789(цифры)
?h = 0123456789abcdef(цифры + строчные)
?H = 0123456789ABCDEF(цифры + заглавные)
?s = «space»!»#$%&'()*+,-./:;<=>?@^_`{|}~ (спец символы)
?a = ?l?u?d?s (строчные + заглавные + цифры + спец символы)

Например, 8-символьный пароль, который включает все строчные, заглавные буквы, цифры и спец символы:

или так гибче можно потом менять набор:

А вот если нужно только цифрами:

Можно указать свои символы (abc123ASDF):

А вот если надо использовать болееодного набора, если мы знаем что первые два символа — цифры, остальные 6 — буквы:

Вот так то. Hashcat много всего уммет, можно написать целую книгу, но я остановлюсь…

А здесь Вы можете найти хороший сборник паролей:

И помните! Не нарушайте закон. Все тайное становится явным Материал предоставлен исключительно в образовательных целях.

Основы безопасности при использовании MD5

Этот стандарт кодирования является одним из самых распространенных методов защиты данных не только в прикладном, но и в веб-программировании. Поэтому не будет лишним обезопасить свой md5 hash от намеренного взлома.

Основным способом, гарантирующим безопасность хеша вашего пароля, является использование «соли». Он основан на добавлении к паролю нескольких случайных символов и последующем хешировании результата.

Во многих языках программирования для этого используются специальные классы и функции. Не являются исключением из правил и серверные языки программирования.

Создать хеш-код MD5 в php можно с помощью нескольких функций:

  • md5() – в качестве одного из параметров принимает значение «соли»;
  • crypt() – в отличие от предыдущей эта функция полностью автоматизирует весь процесс, в том числе и генерирование значения соли.

Ее синтаксис:

string crypt ( string $str  )

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

$hash = crypt('password')

При использовании функции md5() в PHP для задания значения соли используют методы генерации случайных чисел. Например, rand():

<?php
$pass = 'admin';
function salt() {
    $s = '';
    $length = rand(7,12); // длина соли
    for($i=0; $i<$length; $i++) {
         $s .= chr(rand(33,126));//случайный символ из таблицы ASCII 
    }
    return $s;
}
echo md5(md5($pass).salt());

?>

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

  • MD5 (Unix) – заданное первоначальное значение проходит цикл хеширования около 1000 раз;
  • MD5 (HMAC) – данный метод основан на использовании в хешировании специального ключа;
  • MD5 (Base64) – полученный хеш еще раз кодируются с помощью алгоритма Base64.

В статье приведены лишь начальные сведения об обеспечении безопасности хеша, полученного с помощью этого алгоритма. Самым простым и эффективным из них является использование уникального значения «соли», которая позволяет существенно «насолить» злоумышленнику и «подсластить» жизнь владельцу взламываемого пароля.

АМАнтон Малаховавтор

Утилита hashcat

Сначала давайте рассмотрим синтаксис и возможные опции утилиты, а потом уже перейдем к ее использованию. Это консольная утилита, поэтому придется использовать ее через терминал. Давайте сначала рассмотрим синтаксис:

$ hashcat опции файл_хэшей словари_и_настройки

Как видите, все довольно просто. Начнем с основных опций, которые настраивают как будет вести себя утилита:

  • -h — вывести доступные команды и опции;
  • -V — версия программы;
  • -m — тип хэша, который нужно перебрать, например, md5 или sha;
  • -a — вид атаки;
  • -b — запустить тестирование производительности;
  • —hex-salt — указать соль, которая использовалась при хэшировании;
  • —hex-charset — набор символов, для исходных данных;
  • —status — автоматически обновлять состояние подбора;
  • -o — файл для записи результата;
  • -p — символ, которым разделены хэши для перебора;
  • -c — размер кэша для словаря;
  • -n — количество потоков;
  • -l — ограничить количество слов для перебора;
  • -r — файл с правилами генерации вариантов;
  • -D — устройство для перебора, CPU или GPU;
  • —pw-min — минимальная длина варианта, символов;
  • —pw-max — максимальная длина варианта, символов;
  • —table-min — длина пароля для табличной атаки;
  • —table-max — максимальная длина пароля для табличной атаки;
  • —table-file — файл таблицы, для атаки по таблице.

Мы рассмотрели все основные опции, которые сегодня будем использовать. Многие из параметров, например, тип хэша и атаки, задаются в виде цифр. Я не буду рассматривать цифровые коды для типа хэша подробно. Вы можете найти эту информацию, выполнив man hashcat. Рассмотрим типы атак:

  • Straight — обычная атака, берет слова из словаря и проверяет их;
  • Combination — комбинирует слова из словаря в разные комбинации;
  • Toggle-Case — по очереди пробует разный регистр букв для каждого символа слова;
  • Brute-force — атака простым перебором на основе маски или символов;
  • Permutation — при этом типе атаки программа берет слова из словаря и меняет в них буквы местами для получения разных комбинаций;
  • Table-Lookup — Табличная атака, берется одно слово и словаря, а затем на его основе создаются варианты из таблицы. Каждый символ из таблицы будет заменен на набор прописанных вариантов;
  • Prince — новый вид атаки перебора, которая работает быстрее, обычной.

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

  • ?l = abcdefghijklmnopqrstuvwxyz;
  • ?u = ABCDEFGHIJKLMNOPQRSTUVWXYZ;
  • ?d = 0123456789;
  • ?s = !»#$%&'()*+,-./:;<=>?@[]^_`{|}~;
  • ?a = ?l?u?d?s — любой символ;
  • ?b = 0x00 — 0xff.

Теперь мы разобрали все необходимое и можно переходить к практике.

Answers to Questions (FAQ)

How to encrypt in MD5?

MD5 hash calculates from binary data a numeric footprint of 32 hexadecimal characters. The algorithm uses non linear function, here are the 4 main ones:

$$ F(B,C,D) = (B\wedge{C}) \vee (\neg{B} \wedge{D}) $$

$$ G(B,C,D) = (B\wedge{D}) \vee (C \wedge \neg{D}) $$

$$ H(B,C,D) = B \oplus C \oplus D $$

$$ I(B,C,D) = C \oplus (B \vee \neg{D}) $$

Example: dCode is crypted e9837d47b610ee29399831f917791a44 it is not the same hash for dcode (without uppercase) which gives a9d3d129549e80065aa8e109ec40a7c8

How to decrypt MD5 cipher?

The MD5 is based on non-linear (and sometimes non-reversible) functions, so there is no decryption method.

However, a stupid and brute method, the most basic but also the longest and most costly method, is to test one by one all the possible words in a given dictionary to check if their fingerprint is the matching one.

dCode uses its databases of words (2 million potential passwords) whose MD5 hash has already been pre-calculated. These tables are called rainbow tables.

If a word is not in the dictionary, then the decryption will fail.

What is a MD5 collision?

Statistically speaking, for any string (and there is an infinite number), the MD5 associates for a given value a 128-bit fingerprint (a finite number of possibilities). It is therefore mandatory that there are collisions (2 strings with the same hash). Several research works on the subject have demonstrated that the MD5 algorithm, although creating a large entropy of data, could be attacked, and that it was possible to generate chains with the same fingerprints (after several hours of neat calculations).

Example: Discovered by Wang & Yu in How to break MD5 and other hash functions, the two hexadecimal values (the values and not the ASCII string) have the same hash: ‘008ee33a9d58b51cfeb425b0959121c9 (they only differ by 8 hexadecimal digits)

Since this publication in 2005, MD5 encryption is no longer considered cryptographically, giving way to its successors: SHA1 then SHA256.

What are the variants of the MD5 cipher?

The MD5 is threatened by the growing computing capabilities of supercomputers and processors capable of parallelizing hash functions. Thus, to complicate the search by the rainbow tables (databases), it is recommended to add salt (a prefix or a suffix) to the password. In this way, the precalculated tables must be calculated again to take account of the salt which systematically modifies all the fingerprints.

Example: MD5(dCode) = e9837d47b610ee29399831f917791a44 but MD5(dCodeSUFFIX) = 523e9a807fc1d2766c3e3d8f132d4991

Another variant is the application of DOUBLE MD5, which consists in applying the hash algorithm twice.

Example: MD5(dCode) = e9837d47b610ee29399831f917791a44 but MD5(MD5(dCode)) = c1127c7b6fdcafd97a96b37eaf035eaf

MD5 is not the only hash function, it also exists SHA1, SHA256, SHA512 etc.

What is the list of MD5 Magic Hashes for PHP?

The PHP language has a default functionality: the type juggling which allows to not define the type of variable used, the PHP engine tries to automatically detect if the variable is a string, an integer, etc.

However this functionality can become a flaw when handling MD5 string whose value has the form 0e followed by digits between 0 and 9. Indeed, in this case, the PHP engine will convert the string into a floating number having the value 0.

Here is a list of magic MD5 hashes:

MD5(String)
ABJIHVY
0e755264355178451322893275696586
DQWRASX
0e742373665639232907775599582643
DYAXWCA
0e424759758842488633464374063001
EEIZDOI
0e782601363539291779881938479162
GEGHBXL
0e248776895502908863709684713578
GGHMVOE
0e362766013028313274586933780773
GZECLQZ
0e537612333747236407713628225676
IHKFRNS
0e256160682445802696926137988570
MAUXXQC
0e478478466848439040434801845361
MMHUWUV
0e701732711630150438129209816536
NOOPCJF
0e818888003657176127862245791911
NWWKITQ
0e763082070976038347657360817689
PJNPDWY
0e291529052894702774557631701704
QLTHNDT
0e405967825401955372549139051580
QNKCDZO
0e830400451993494058024219903391

Bonus strings that can also be evaluated at : 0e215962017, 0e730083352, 0e807097110, 0e840922711

Как получить хеши паролей Windows

Дамп хешей паролей Windows на работающем компьютере

На запущенной системе проблематично получить доступ к файлам C:/Windows/System32/config/SAM и C:/Windows/System32/config/SYSTEM, хотя это и возможно. Для сохранения копий этих файлов можно использовать утилиту reg, а именно следующие команды:

reg save HKLM\SYSTEM SystemBkup.hiv
reg save HKLM\SAM SamBkup.hiv

В некоторых инструкциях вместо SYSTEM сохраняют куст SECURITY — это ошибка, с кустами SECURITY и SAM восстановить хеш не удасться, нужны именно SYSTEM и SAM!

Хеш пароля также содержится в оперативной памяти, а именно в процессе Local Security Authority Process (lsass.exe). Этот процесс всегда запущен в работающей Windows и можно сделать его дамп (копию процесса в оперативной памяти сохранить на диск в виде файла). Для создания дампа можно использовать различные утилиты, в том числе две официальные:

  • ProcDump
  • Диспетчер задач

Диспетчер задач уже имеется в каждой Windows, чтобы его открыть нажмите Win+r и наберите taskmgr, затем нажмите ENTER. Либо правой кнопкой мыши нажмите на панель задач (то есть на нижнюю полоску, где находятся часы, кнопка пуск и т. д.) и в контекстном меню выберите «Диспетчер задач».

В Диспетчере задач нажмите «Подробнее» и во вкладке «Процессы», в разделе «Процессы Windows» найдите Local Security Authority Process, нажмите на него правой кнопкой мыши и выберите в контекстном меню пункт «Создать файл дампа»:

Дождитесь завершения:

Файл будет сохранён по пути C:\Users\ПОЛЬЗОВАТЕЛЬ\AppData\Local\Temp\lsass.DMP. У меня имя пользователя MiAl и путь до файла C:\Users\MiAl\AppData\Local\Temp\lsass.DMP.

Дамп хешей паролей Windows на выключенном компьютере

На выключенном компьютере для последующего извлечения пароля пользователя достаточно скопировать файлы:

  • C:/Windows/System32/config/SAM
  • C:/Windows/System32/config/SYSTEM

Эти же файлы можно найти в резервной копии Windows или в Shadow копии диска, либо скопировать загрузившись с Live системы.

Beast Mode s5cmd

allows to pass in some file, containing list of operations to be performed, as an argument to the command as illustrated in the example. Alternatively, one can pipe in commands into
the

The above command performs two invocations; first, searches for files with test suffix and then creates a copy to local directory command for each matching file and finally, pipes in those into the

Let’s examine another usage instance, where we migrate files older than
30 days to a cloud object storage:

It is worth to mention that, command should not be considered as a silver bullet for all operations. For example, assume we want to remove the following objects:

Rather than executing

with command, it is better to just use

the latter sends single delete request per thousand objects, whereas using the former approach
sends a separate delete request for each subcommand provided to Thus, there can be a
significant runtime difference between those two approaches.

Как зашифровать и расшифровать с помощью DPAPI

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

Перед тем как переходить к извлечению паролей из веб-браузеров и других хранящихся на Windows паролей, давайте познакомимся поближе к DPAPI. Уже написано много хороших статей, объясняющих работу DPAPI. Не буду пытаться их пересказать, а просто приведу ссылки в конце этой статье. Вместо того, чтобы вникать в технические детали DPAPI, давайте пойдём практическим путём: зашифруем строку или файл с помощью DPAPI.

Для работы с DPAPI используется модуль dpapi, для шифрования данных используется команда protect. У этой команды есть одна обязательная опция /data, после которой нужно указать путь до файла, который вы хотите зашифровать, или текстовую строку.

К примеру, я хочу зашифровать строку Test string to encrypt:

dpapi::protect /data:"Test string to encrypt"

Обратите внимание на секцию «Blob:» — это и есть зашифрованные данные в бинарном виде.

Вместо вывода зашифрованных данных на экран, их можно сохранить с помощью опции /out:

dpapi::protect /data:"Test string to encrypt" /out:crypted.txt

В результате будет создан файл crypted.txt. Этот файл содержит зашифрованные данные, а именно строку «Test string to encrypt».

Как вы могли заметить, нам не нужно думать о мастер ключах и паролях — система всё делает сама.

Для расшифровки используется функция blob (так называются зашифрованные этим методом данные) из этого же модуля dpapi. У этой функции одна обязательная опция — /in, после которой нужно указать данные для расшифровки. Для расшифровки также нужно указать опцию /unprotect, в противном случае будет только показана информация о blob (зашифрованных данных) без их расшифровки:

dpapi::blob /in:crypted.txt /unprotect

Вы можете увидеть на экране исходную строку.

Если вы хотите, чтобы расшифрованные данные сохранились в файл, то используйте опцию /out.

Introduction

There has been some recent discussion here concerning how to save password information. In general, it is a Very Bad Idea(tm) to just store a password in an application, data file, INI file, registry, or anywhere but in volatile memory.

A better idea than trying to save a password is to save a «cryptological hash» of the password. Cryptographers call this type of hash a «digest». A digest function in this context is just a function that takes a block of text (called «the plaintext») and computes a checksum type number for that block. Cryptological digests have the properties that,

  • It is highly unlikely that different input text will produce the same digest.
  • It is very, very difficult if not totally impossible to get from the digest back to the input plaintext.

Programmers wishing to secure their password data can immediately compute the digest of the password, and then save that. When the user is prompted for a password, the digest of the input password candidate is computed, and this digest is compared against the stored digest. If they are equal, then the user has entered the correct password. Note that the programmer can post the stored hash value on a public web page or a billboard on the highway, and the security of his product is not compromised. He or she has no worries about someone with a hex editor digging out passwords.

Digests may also be used to verify that a message has been transmitted correctly, in a manner similar to cyclic redundancy checks.

A proven digest algorithm is «Message Digest Five» by Ron Rivest (Ron is the ‘R’ in RSA). It is described in Internet RFC 1321, «The MD5 Message-Digest Algorithm». A google search will provide hundreds of links to this RFC, I used the one I found here. This RFC includes a K&R style ‘C’ implementation of the MD5 algorithm. This implementation is a bit awkward to use, so I’ve wrapped it in a simple generic C++ class.  The class is called . It has only four interesting members:

Copy Code

CMD5();    

CMD5(const char* plainText);  

void setPlainText(const char* plainText);
    
    
    
                                           
const char* getMD5Digest();
    
    

To use the class, just set the plain text either in the constructor or with the member. The class calls a very slightly modified version of the RFC 1321 code to compute the digest, which is immediately available by calling .

Here is some pseudo code showing how to use this class:

Copy Code

cout >> "Enter password:"; 
cin >> strUserEnteredPassword;
CMD5 md5((const char*)strUserEnteredPassword));
if(strcmp(md5.getMD5Digest(), 
  (const char*)m_PreviouslyStoredDigestOfTheActualPassword)==)
{ 
    
} 
else
{   
    
}

To use the class, you need these files:

  • md5class.h and md5class.cpp — The C++ code.
  • global.h, MD5.h, md5.c — Slightly modified versions of the RFC 1321 code.
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector