Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.77/212: Рейтинг темы: голосов - 212, средняя оценка - 4.77
 Аватар для [XandeR]
31 / 31 / 3
Регистрация: 18.03.2009
Сообщений: 381
Записей в блоге: 2

Получить MD5 хэш введенного текста

25.07.2010, 16:25. Показов 44027. Ответов 47
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите какую библиотеку нужно подключить и где её взять чтобы получить мд5 хэш текста? облазил интернет ничего рабочего не нашел
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.07.2010, 16:25
Ответы с готовыми решениями:

Как получить MD5-хэш введенного пароля?
Всем доброго времени суток. Сейчас пишу простенький лаунчер для своего сервера и он должен брать данные из базы данных. В базе пароли...

Перевод текста в md5 хэш
подскажите как перевести переменную в md5 хэш? Пробовал так: <?php $Str = 'apple'; echo md5($Str); ?> и так пробовал: ...

Получить MD5-хэш для строк
вот как получить мд5 через пробел от такого отрывка кода: Console.WriteLine(s7 + i.ToString() + s2 + s0); мне надо чтобы было бы так: ...

47
Покинул форум
3189 / 1368 / 109
Регистрация: 29.01.2010
Сообщений: 2,887
25.07.2010, 16:57
[XandeR], вот, вроде, здесь пользователь выкладывает ссылку, которая вам, может быть, чем-то поможет: Надо решить проблему с md5
0
 Аватар для [XandeR]
31 / 31 / 3
Регистрация: 18.03.2009
Сообщений: 381
Записей в блоге: 2
25.07.2010, 17:11  [ТС]
я это видел, по этой ссылке http://www.md5hashing.com/c++/ я не нашел библиотеки она тупо на какую то хрень скидывает где ничего невозможно найти
0
Эксперт С++
 Аватар для MikeSoft
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
25.07.2010, 20:24
Лучший ответ Сообщение было отмечено как решение

Решение

[XandeR], встроенная библиотека Indy предоставляет функции для получения MD5-хеша.
Подключаем:
C++
1
#include <IdHashMessageDigest.hpp>
Определяем функцию:
C++
1
2
3
4
5
6
7
8
9
10
11
12
String __fastcall MD5(const String Text)
{
  String result;
  TIdHashMessageDigest5 *idmd5 = new TIdHashMessageDigest5();
  try {
    result = idmd5->HashStringAsHex(Text);
  }
  __finally {
    delete idmd5;
  }
  return result;
}
И пользуемся:
C++
1
MD5("Text");
9
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
26.07.2010, 15:33
[XandeR], зачем библиотеки лишние тащить, Windows предоставляет функции для получения какого угодно хеша.
1
 Аватар для [XandeR]
31 / 31 / 3
Регистрация: 18.03.2009
Сообщений: 381
Записей в блоге: 2
26.07.2010, 17:33  [ТС]
а как ими пользоватся?
0
 Аватар для [XandeR]
31 / 31 / 3
Регистрация: 18.03.2009
Сообщений: 381
Записей в блоге: 2
15.08.2010, 16:27  [ТС]
MikeSoft все работает, спасибо
0
25 / 25 / 8
Регистрация: 27.10.2009
Сообщений: 81
16.08.2010, 07:36
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
char * TForm1::md5_noerrors(char *data,int size)
{
 HCRYPTHASH hHash;
 HCRYPTPROV hProv;
 BYTE md5hash[16];
 DWORD md5hash_size,dwSize;
 static char str_hash[33];
 int i;
 
 ZeroMemory(str_hash,sizeof(str_hash));
 ZeroMemory(md5hash,sizeof(md5hash));
 CryptAcquireContext(&hProv, NULL, NULL, PROV_RSA_FULL, 0);
 CryptCreateHash(hProv,CALG_MD5,0,0,&hHash);
 CryptHashData(hHash,data,size,0);
 dwSize=sizeof(md5hash_size);
 CryptGetHashParam(hHash,HP_HASHSIZE,(BYTE *)&md5hash_size,&dwSize,0);
 CryptGetHashParam(hHash,HP_HASHVAL,md5hash,&md5hash_size,0);
 CryptDestroyHash(hHash);
 CryptReleaseContext(hProv, 0);
 
 for(i = 0 ; i < md5hash_size ; i++)
  sprintf(str_hash+2*i,"%2.2x",md5hash[i]);
 
 return str_hash;
}
и пример вызова:
C++
1
2
AnsiString item;
md5_noerrors(item.c_str(),item.Length());
1
 Аватар для adm1nspb
2 / 2 / 2
Регистрация: 12.12.2011
Сообщений: 95
11.04.2012, 23:32
Цитата Сообщение от MikeSoft Посмотреть сообщение
[XandeR], встроенная библиотека Indy предоставляет функции для получения MD5-хеша.
Подключаем:
C++
1
#include <IdHashMessageDigest.hpp>
Определяем функцию:
C++
1
2
3
4
5
6
7
8
9
10
11
12
String __fastcall MD5(const String Text)
{
  String result;
  TIdHashMessageDigest5 *idmd5 = new TIdHashMessageDigest5();
  try {
    result = idmd5->HashStringAsHex(Text);
  }
  __finally {
    delete idmd5;
  }
  return result;
}
И пользуемся:
C++
1
MD5("Text");
Пробовал данное решение в Embarcadero® C++Builder® XE Version 15.0.3953 (Потомок Borland С++ Builder)
Все работает корректно кроме одного

В случае если преобразуются две одинаковые строки на кирилице, то внезависимости от того каким шрифтом набран текст (прописным или строчным) md5 у двух одинаковых строк набранных разным шрифтом будут одинаковы. Может кто знает как это исправить? Или..есть ли еще какие библиотеки?
0
Волшебник
 Аватар для Rapsod
65 / 64 / 7
Регистрация: 21.11.2009
Сообщений: 319
01.08.2012, 12:22
Цитата Сообщение от MikeSoft Посмотреть сообщение
[XandeR], встроенная библиотека Indy предоставляет функции для получения MD5-хеша.
Подключаем:
C++
1
#include <IdHashMessageDigest.hpp>
Определяем функцию:
C++
1
2
3
4
5
6
7
8
9
10
11
12
String __fastcall MD5(const String Text)
{
  String result;
  TIdHashMessageDigest5 *idmd5 = new TIdHashMessageDigest5();
  try {
    result = idmd5->HashStringAsHex(Text);
  }
  __finally {
    delete idmd5;
  }
  return result;
}
И пользуемся:
C++
1
MD5("Text");
Здравствуйте уважаемые программисты!
Проблема такая, вчера этот код компилировался отлично, а сегодня, по неизвестным причинам ругается на линки:

[ILINK32 Error] Error: Unresolved external 'Idhashmessagedigest::TIdHashMessageDige st5::' referenced from D:\CppBuilder\MD5\RELEASE\UNIT1.OBJ

[ILINK32 Error] Error: Unresolved external '__fastcall Idhashmessagedigest::TIdHashMessageDiges t4::TIdHashMessageDigest4()' referenced from D:\CppBuilder\MD5\RELEASE\UNIT1.OBJ

[ILINK32 Error] Error: Unresolved external '__fastcall Idhash::TIdHash::HashStringAsHex(const System::UnicodeString, Sysutils::TEncoding *)' referenced from D:\CppBuilder\MD5\RELEASE\UNIT1.OBJ

Кто знает как решить эту проблему?
Заранее благодарю!!!
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
01.08.2012, 13:28
для начала удалить объектные файлы
0
Волшебник
 Аватар для Rapsod
65 / 64 / 7
Регистрация: 21.11.2009
Сообщений: 319
01.08.2012, 14:41
Цитата Сообщение от LK Посмотреть сообщение
для начала удалить объектные файлы
Удалил, не помогло.(
Ошибки остались.

Вот скинул исходник. хотя в нем ошибок нету, так как вчера все работало.

Помогите пожалуйста!
Вложения
Тип файла: zip MD5.zip (6.7 Кб, 164 просмотров)
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
01.08.2012, 15:04
Цитата Сообщение от Rapsod Посмотреть сообщение
TIdHashMessageDigest4()
... вот это откуда, думаю, стоит разобраться (и забыть на время, что "вчера" "отлично")
0
Волшебник
 Аватар для Rapsod
65 / 64 / 7
Регистрация: 21.11.2009
Сообщений: 319
01.08.2012, 15:28
Цитата Сообщение от nick42 Посмотреть сообщение
... вот это откуда, думаю, стоит разобраться (и забыть на время, что "вчера" "отлично")
Это с файла #include <IdHashMessageDigest.hpp>
Он находиться в ...RAD Studio\7.0\include\Indy10

Содержимое файла IdHashMessageDigest.hpp:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
// CodeGear C++Builder
// Copyright (c) 1995, 2009 by Embarcadero Technologies, Inc.
// All rights reserved
 
// (DO NOT EDIT: machine generated header) 'Idhashmessagedigest.pas' rev: 21.00
 
#ifndef IdhashmessagedigestHPP
#define IdhashmessagedigestHPP
 
#pragma delphiheader begin
#pragma option push
#pragma option -w-      // All warnings off
#pragma option -Vx      // Zero-length empty class member functions
#pragma pack(push,8)
#include <System.hpp>   // Pascal unit
#include <Sysinit.hpp>  // Pascal unit
#include <Idglobal.hpp> // Pascal unit
#include <Idhash.hpp>   // Pascal unit
#include <Classes.hpp>  // Pascal unit
#include <Sysutils.hpp> // Pascal unit
 
//-- user supplied -----------------------------------------------------------
 
namespace Idhashmessagedigest
{
//-- type declarations -------------------------------------------------------
typedef StaticArray<unsigned, 4> T4x4LongWordRecord;
 
typedef StaticArray<unsigned, 16> T16x4LongWordRecord;
 
typedef StaticArray<StaticArray<unsigned, 4>, 4> T4x4x4LongWordRecord;
 
typedef StaticArray<System::Byte, 64> T512BitRecord;
 
typedef StaticArray<System::Byte, 48> T384BitRecord;
 
typedef StaticArray<System::Byte, 16> T128BitRecord;
 
class DELPHICLASS TIdHashMessageDigest;
class PASCALIMPLEMENTATION TIdHashMessageDigest : public Idhash::TIdHash
{
    typedef Idhash::TIdHash inherited;
    
protected:
    Sysutils::TBytes FCBuffer;
    virtual void __fastcall MDCoder(void) = 0 ;
    virtual void __fastcall Reset(void);
public:
    /* TIdHash.Create */ inline __fastcall virtual TIdHashMessageDigest(void) : Idhash::TIdHash() { }
    
public:
    /* TObject.Destroy */ inline __fastcall virtual ~TIdHashMessageDigest(void) { }
    
};
 
 
class DELPHICLASS TIdHashMessageDigest2;
class PASCALIMPLEMENTATION TIdHashMessageDigest2 : public TIdHashMessageDigest
{
    typedef TIdHashMessageDigest inherited;
    
protected:
    T384BitRecord FX;
    T128BitRecord FCheckSum;
    virtual void __fastcall MDCoder(void);
    virtual void __fastcall Reset(void);
    virtual Sysutils::TBytes __fastcall GetHashBytes(Classes::TStream* AStream, __int64 ASize);
    virtual System::UnicodeString __fastcall HashToHex(const Sysutils::TBytes AHash);
    
public:
    __fastcall virtual TIdHashMessageDigest2(void);
public:
    /* TObject.Destroy */ inline __fastcall virtual ~TIdHashMessageDigest2(void) { }
    
};
 
 
class DELPHICLASS TIdHashMessageDigest4;
class PASCALIMPLEMENTATION TIdHashMessageDigest4 : public TIdHashMessageDigest
{
    typedef TIdHashMessageDigest inherited;
    
protected:
    T4x4LongWordRecord FState;
    virtual Sysutils::TBytes __fastcall GetHashBytes(Classes::TStream* AStream, __int64 ASize);
    virtual System::UnicodeString __fastcall HashToHex(const Sysutils::TBytes AHash);
    virtual void __fastcall MDCoder(void);
    
public:
    __fastcall virtual TIdHashMessageDigest4(void);
public:
    /* TObject.Destroy */ inline __fastcall virtual ~TIdHashMessageDigest4(void) { }
    
};
 
 
class DELPHICLASS TIdHashMessageDigest5;
class PASCALIMPLEMENTATION TIdHashMessageDigest5 : public TIdHashMessageDigest4
{
    typedef TIdHashMessageDigest4 inherited;
    
protected:
    virtual void __fastcall MDCoder(void);
public:
    /* TIdHashMessageDigest4.Create */ inline __fastcall virtual TIdHashMessageDigest5(void) : TIdHashMessageDigest4() { }
    
public:
    /* TObject.Destroy */ inline __fastcall virtual ~TIdHashMessageDigest5(void) { }
    
};
 
 
//-- var, const, procedure ---------------------------------------------------
 
}   /* namespace Idhashmessagedigest */
using namespace Idhashmessagedigest;
#pragma pack(pop)
#pragma option pop
 
#pragma delphiheader end.
//-- end unit ----------------------------------------------------------------
#endif  // IdhashmessagedigestHPP
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
01.08.2012, 15:45
Вообще-то у меня при компиляции этого проекта на ХЕ2 варнинги повыскакивали на отсутствие чего-то на L:\users\sstahiv\Visual Studio..., мелочь, конечно, это либо флэшка, либо компакт, который в истории прописался. Но кто знает, чего там эмбаркадеры начудили... . Тем более, если до этого нормально компилировалось... . Может стоит восстановить этот L?
1
Волшебник
 Аватар для Rapsod
65 / 64 / 7
Регистрация: 21.11.2009
Сообщений: 319
01.08.2012, 16:15
Цитата Сообщение от nick42 Посмотреть сообщение
Вообще-то у меня при компиляции этого проекта на ХЕ2 варнинги повыскакивали на отсутствие чего-то на L:\users\sstahiv\Visual Studio..., мелочь, конечно, это либо флэшка, либо компакт, который в истории прописался. Но кто знает, чего там эмбаркадеры начудили... . Тем более, если до этого нормально компилировалось... . Может стоит восстановить этот L?
Опана... странно... у меня есть такой диск на винчестере, но этот путь никакого отношения не имеет к данному проекту.
Может студии что-то между собой перепутали...

Так-так нашел. сейчас разберусь что это такое
Благодарю!!!
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
01.08.2012, 16:24
Цитата Сообщение от Rapsod Посмотреть сообщение
А можешь скинуть полный путь куда оно лезит и к чему именно?
Вот__
Миниатюры
Получить MD5 хэш введенного текста  
0
Волшебник
 Аватар для Rapsod
65 / 64 / 7
Регистрация: 21.11.2009
Сообщений: 319
01.08.2012, 17:32
С этим разобрался.
Но эти ошибки так и остались:

[ILINK32 Error] Error: Unresolved external 'Idhashmessagedigest::TIdHashMessageDige st5::'
[ILINK32 Error] Error: Unresolved external '__fastcall Idhashmessagedigest::TIdHashMessageDiges t4::TIdHashMessageDigest4()'
[ILINK32 Error] Error: Unresolved external '__fastcall Idhash::TIdHash::HashStringAsHex(const System::UnicodeString, Sysutils::TEncoding *)'
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
01.08.2012, 18:01
Давайте разберемся: "вчера все работало" и "сегодня ошибки" - это на одном и том же компьютере? И что в этом промежутке (вчера-сегодня) с ним произошло?
0
Волшебник
 Аватар для Rapsod
65 / 64 / 7
Регистрация: 21.11.2009
Сообщений: 319
01.08.2012, 18:17
Цитата Сообщение от nick42 Посмотреть сообщение
Давайте разберемся: "вчера все работало" и "сегодня ошибки" - это на одном и том же компьютере? И что в этом промежутке (вчера-сегодня) с ним произошло?
Вчера все работало -> Комп выключили, Билдера закрыли -> Утром включили комп, запустили Билдера и появились ошибки.

Если создать новый проект с такой же структурой (метод хеширования MD5 + #include <IdHashMessageDigest.hpp> + вызов метода MD5("Text") то вываливаются такие же ошибки.

Если проанализировать ошибки, то становиться ясно что метод не может найти какие-то части кода.
Хотя я уже больше двух лет с этим MD5 работаю, но никогда такого не было...(((
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.08.2012, 18:17
Помогаю со студенческими работами здесь

Получить MD5-хэш для значения из базы данных
вот как мне написать код который как бы в базе данных будет то есть вот для буквы а мд5 является...

Ввести в форму слово и получить его md5 и sha1 хэш.
Подскажите пожалуйста как ее использовать? &lt;?php $str = 'слово'; if (sha1($str) ===...

Разгадать хэш md5
Сразу скажу - не уверен, что написал в нужный раздел. Дан хэш c616af471d8d523d5da90b01515deb09fhgtsawsdsdfaw ...

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

Хэш sha1 и md5
Посчитать хэш sha1 и md5 выбранный пользователем файл алгоритмом . Использовать стандартную реализацию алгоритмов в .NET. Для md5 этот...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
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