3 / 3 / 0
Регистрация: 19.01.2014
Сообщений: 57

Код нахождения MD5

09.01.2015, 20:39. Показов 740. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Првиет всем.Задача такова.Необходимо скомпилировать код.Для нахождения MD5.

Беру пример отсюда.http://www.vr-online.ru/conten... hagom-1581


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
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
#include "stdafx.h"
#include <math.h>
#include "md5.h"
 
uint F(uint X, uint Y, uint Z) {return ((X & Y) | ((~X) & Z));}
uint G(uint X, uint Y, uint Z) {return (X & Z) | (Y & (~Z));}
uint H(uint X, uint Y, uint Z) {return X ^ Y ^ Z;}
uint I(uint X, uint Y, uint Z) {return Y ^ (X | (~Z));}
uint rotate_left(uint value, int shift) {return value << shift | value >> (32-shift);}
 
#include <string>
using namespace std;
 
std::string get_md5(std::string in)
{
    int length = in.length();
    int rest = length%64;
    int size = 0;
 
    if(rest < 56) 
        size = length - rest + 56 + 8; 
    else
        size = length + 64 - rest + 56 + 8;
 
    unsigned char *msg_for_decode = new unsigned char[size];
    
    for(int i=0; i < length; i++) 
        msg_for_decode[i] = in[i]; 
    msg_for_decode[length] = 0x80;
    for(int i = length + 1; i < size; i++)
        msg_for_decode[i] = 0;
 
    __int64 bit_length = (uint)(length)*8;
 
    for(int i = 0; i < 8; i++)
        msg_for_decode[size - 8 + i] = (unsigned char)(bit_length >> i * 8);
 
    uint A=0x67452301, B=0xefcdab89, C=0x98badcfe, D=0x10325476;
    uint T[64]; 
 
    for(int i=0;i<64;i++) 
        T[i]= uint(pow(2,32)*fabs(sin(i + 1))); 
 
    uint *X=(uint*)(msg_for_decode);
 
    uint AA = 0, BB = 0, CC = 0, DD = 0;
 
    for(int i = 0; i < size/4; i+=16){
        AA = A;BB = B; CC = C; DD = D;
 
        //раунд 1
        A = B + rotate_left((A + F(B,C,D) + X[i+ 0] + T[ 0]),  7);
        D = A + rotate_left((D + F(A,B,C) + X[i+ 1] + T[ 1]), 12);
        C = D + rotate_left((C + F(D,A,B) + X[i+ 2] + T[ 2]), 17);
        B = C + rotate_left((B + F(C,D,A) + X[i+ 3] + T[ 3]), 22);
 
        A = B + rotate_left((A + F(B,C,D) + X[i+ 4] + T[ 4]),  7);
        D = A + rotate_left((D + F(A,B,C) + X[i+ 5] + T[ 5]), 12);
        C = D + rotate_left((C + F(D,A,B) + X[i+ 6] + T[ 6]), 17);
        B = C + rotate_left((B + F(C,D,A) + X[i+ 7] + T[ 7]), 22);
 
        A = B + rotate_left((A + F(B,C,D) + X[i+ 8] + T[ 8]),  7);
        D = A + rotate_left((D + F(A,B,C) + X[i+ 9] + T[ 9]), 12);
        C = D + rotate_left((C + F(D,A,B) + X[i+10] + T[10]), 17);
        B = C + rotate_left((B + F(C,D,A) + X[i+11] + T[11]), 22);
 
        A = B + rotate_left((A + F(B,C,D) + X[i+12] + T[12]),  7);
        D = A + rotate_left((D + F(A,B,C) + X[i+13] + T[13]), 12);
        C = D + rotate_left((C + F(D,A,B) + X[i+14] + T[14]), 17);
        B = C + rotate_left((B + F(C,D,A) + X[i+15] + T[15]), 22);
 
        //раунд 2
        A = B + rotate_left((A + G(B,C,D) + X[i+ 1] + T[16]),  5);
        D = A + rotate_left((D + G(A,B,C) + X[i+ 6] + T[17]),  9);
        C = D + rotate_left((C + G(D,A,B) + X[i+11] + T[18]), 14);
        B = C + rotate_left((B + G(C,D,A) + X[i+ 0] + T[19]), 20);
 
        A = B + rotate_left((A + G(B,C,D) + X[i+ 5] + T[20]),  5);
        D = A + rotate_left((D + G(A,B,C) + X[i+10] + T[21]),  9);
        C = D + rotate_left((C + G(D,A,B) + X[i+15] + T[22]), 14);
        B = C + rotate_left((B + G(C,D,A) + X[i+ 4] + T[23]), 20);
 
        A = B + rotate_left((A + G(B,C,D) + X[i+ 9] + T[24]),  5);
        D = A + rotate_left((D + G(A,B,C) + X[i+14] + T[25]),  9);
        C = D + rotate_left((C + G(D,A,B) + X[i+ 3] + T[26]), 14);
        B = C + rotate_left((B + G(C,D,A) + X[i+ 8] + T[27]), 20);
 
        A = B + rotate_left((A + G(B,C,D) + X[i+13] + T[28]),  5);
        D = A + rotate_left((D + G(A,B,C) + X[i+ 2] + T[29]),  9);
        C = D + rotate_left((C + G(D,A,B) + X[i+ 7] + T[30]), 14);
        B = C + rotate_left((B + G(C,D,A) + X[i+12] + T[31]), 20);
 
        //раунд 3
        A = B + rotate_left((A + H(B,C,D) + X[i+ 5] + T[32]),  4);
        D = A + rotate_left((D + H(A,B,C) + X[i+ 8] + T[33]), 11);
        C = D + rotate_left((C + H(D,A,B) + X[i+11] + T[34]), 16);
        B = C + rotate_left((B + H(C,D,A) + X[i+14] + T[35]), 23);
 
        A = B + rotate_left((A + H(B,C,D) + X[i+ 1] + T[36]),  4);
        D = A + rotate_left((D + H(A,B,C) + X[i+ 4] + T[37]), 11);
        C = D + rotate_left((C + H(D,A,B) + X[i+ 7] + T[38]), 16);
        B = C + rotate_left((B + H(C,D,A) + X[i+10] + T[39]), 23);
 
        A = B + rotate_left((A + H(B,C,D) + X[i+13] + T[40]),  4);
        D = A + rotate_left((D + H(A,B,C) + X[i+ 0] + T[41]), 11);
        C = D + rotate_left((C + H(D,A,B) + X[i+ 3] + T[42]), 16);
        B = C + rotate_left((B + H(C,D,A) + X[i+ 6] + T[43]), 23);
 
        A = B + rotate_left((A + H(B,C,D) + X[i+ 9] + T[44]),  4);
        D = A + rotate_left((D + H(A,B,C) + X[i+12] + T[45]), 11);
        C = D + rotate_left((C + H(D,A,B) + X[i+15] + T[46]), 16);
        B = C + rotate_left((B + H(C,D,A) + X[i+ 2] + T[47]), 23);
 
        //раунд 4
        A = B + rotate_left((A + I(B,C,D) + X[i+ 0] + T[48]),  6);
        D = A + rotate_left((D + I(A,B,C) + X[i+ 7] + T[49]), 10);
        C = D + rotate_left((C + I(D,A,B) + X[i+14] + T[50]), 15);
        B = C + rotate_left((B + I(C,D,A) + X[i+ 5] + T[51]), 21);
 
        A = B + rotate_left((A + I(B,C,D) + X[i+12] + T[52]),  6);
        D = A + rotate_left((D + I(A,B,C) + X[i+ 3] + T[53]), 10);
        C = D + rotate_left((C + I(D,A,B) + X[i+10] + T[54]), 15);
        B = C + rotate_left((B + I(C,D,A) + X[i+ 1] + T[55]), 21);
 
        A = B + rotate_left((A + I(B,C,D) + X[i+ 8] + T[56]),  6);
        D = A + rotate_left((D + I(A,B,C) + X[i+15] + T[57]), 10);
        C = D + rotate_left((C + I(D,A,B) + X[i+ 6] + T[58]), 15);
        B = C + rotate_left((B + I(C,D,A) + X[i+13] + T[59]), 21);
 
        A = B + rotate_left((A + I(B,C,D) + X[i+ 4] + T[60]),  6);
        D = A + rotate_left((D + I(A,B,C) + X[i+11] + T[61]), 10);
        C = D + rotate_left((C + I(D,A,B) + X[i+ 2] + T[62]), 15);
        B = C + rotate_left((B + I(C,D,A) + X[i+ 9] + T[63]), 21);
 
        A += AA;
        B += BB;
        C += CC;
        D += DD;
    }
 
    delete []msg_for_decode;
    std::string res = to_hex(A) + to_hex(B) + to_hex(C) + to_hex(D);
    return res;
}
Код конверта в Hex значения я убрал.Так как мне это не нужно.

1>------ Построение начато: проект: MD5Mody, Конфигурация: Debug Win32 ------
1> MD5Mody.cpp
1>c:\users\lex90\documents\visual studio 2010\projects\md5mody\md5mody\md5mody.cp p(60): error C2668: pow: неоднозначный вызов перегруженной функции
1> c:\program files\microsoft visual studio 10.0\vc\include\math.h(583): может быть "long double pow(long double,int)"
1> c:\program files\microsoft visual studio 10.0\vc\include\math.h(535): или "float pow(float,int)"
1> c:\program files\microsoft visual studio 10.0\vc\include\math.h(497): или "double pow(double,int)"
1> при попытке сопоставить список аргументов "(int, int)"
1>c:\users\lex90\documents\visual studio 2010\projects\md5mody\md5mody\md5mody.cp p(60): error C2668: sin: неоднозначный вызов перегруженной функции
1> c:\program files\microsoft visual studio 10.0\vc\include\math.h(585): может быть "long double sin(long double)"
1> c:\program files\microsoft visual studio 10.0\vc\include\math.h(537): или "float sin(float)"
1> c:\program files\microsoft visual studio 10.0\vc\include\math.h(123): или "double sin(double)"
1> при попытке сопоставить список аргументов "(int)"
1>c:\users\lex90\documents\visual studio 2010\projects\md5mody\md5mody\md5mody.cp p(60): fatal error C1903: не удается восстановить после предыдущих ошибок; остановка компиляции
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========

Ошибок валом подскажите пожалуйста.А так же если есть другие нормальные примеры md5 реализации подкиньте если есть.OpenSSl пытался собирать проект с ней ничего не пашет.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.01.2015, 20:39
Ответы с готовыми решениями:

Код нахождения MD5
Привет всем с помощью openssl пытаюсь получить md5 #include&lt;iostream&gt; #include&lt;openssl\md5.h&gt; #include&lt;windows.h.&gt; ...

Непонятка с функцией md5 нахождения хэш - суммы
Здравствуйте! Решил по чуть-чуть двигаться в сторону более высоких материй, в частности шифрование. Столкнулся с проблемой, в C++...

Код проверки файла md5
Приветствую всех. Кто напишет &quot;Если конечно не сложно вам будет&quot; код проверки файла md5. Алгоритм: -Берем файл по адресу -Узнаем...

4
 Аватар для casper007
71 / 71 / 58
Регистрация: 12.12.2013
Сообщений: 420
09.01.2015, 20:57
На сайте Майкрософта есть описание этой ошибки и способы устранения. См. тут
0
_
317 / 151 / 27
Регистрация: 08.10.2011
Сообщений: 432
09.01.2015, 20:58
Цитата Сообщение от lex90 Посмотреть сообщение
Код конверта в Hex значения я убрал.Так как мне это не нужно.
рассмешил. тебе не нужно, а программе нужно. верни ее обратно.
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
09.01.2015, 21:42
Замени pow(2,32), на 0x100000000.
0
3 / 3 / 0
Регистрация: 19.01.2014
Сообщений: 57
09.01.2015, 22:42  [ТС]
Спасибо тогда в этой строке появляется ошибка.
error C2668: sin: неоднозначный вызов перегруженной функции
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.01.2015, 22:42
Помогаю со студенческими работами здесь

Перевести код с VB. NET на PHP (хеширование MD5)
Добрый день, товарищи. Возможно, кто-то подскажет. Перед мной стоит задача - перенести код с VB на PHP Код - функция...

Если MD5 программы не равен MD5, указанному на сервере, то программа закрывается
И так, собственно, изложил свою мысль в заголовке. Если MD5 программы не равен MD5, указанному на сервере (в текстовом файле), то...

Проверка MD5 локального файла с MD5 записанных в двух разных текстовых файлах
Задача такова: Public Function CheckHash(LocalPath As Object, MD5File As Object) LocalPath - Местонахождение локальных файлов, у...

Сравнение md5-сумм с md5-суммами файлов!
Всем доброго времени суток! Помогите реализовать небольшое приложение - вообщем имеется папка &quot;Тест&quot; в этой папке есть 2 файла...

Где можно найти готовый исходный код MD5 для файла?
MD5 - исходный код на СИ / С++? Где можно найти готовый исходный код MD5 для файла?


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

Новые блоги и статьи
Kubernetes с Apache Flink для обработки данных в реальном времени
Mr. Docker 17.05.2025
Kubernetes — это целая философия управления распределёнными приложениями. В отличие от "примитивных" решений вроде Docker Swarm, K8s (как его ласково называют в тусовке DevOps-инженеров) предлагает. . .
Использование декораторов в Python
py-thonny 17.05.2025
Если вы когда-нибудь задумывались о том, как красиво расширить функциональность кода без лишней возни и дублирования, декораторы в Python — та самая волшебная палочка, которую вы искали. По сути, это. . .
Как некоторые отстают в навыках поиска информации в сети. Дублирование страницы открытого адреса в сети.
Hrethgir 17.05.2025
. . . берём бразуер, для многих он является инструментом поиска информации в сети. Понятное дело, что чтобы переходить по сслыкам есть такая фишка - "открыть в новой вкладке", но, представим себе что вы. . .
Реализация многопоточных сетевых серверов на Python
py-thonny 16.05.2025
Когда сталкиваешься с необходимостью писать высоконагруженные сетевые сервисы, выбор технологии имеет критическое значение. Python, со своей элегантностью и высоким уровнем абстракции, может. . .
C# и IoT: разработка Edge приложений с .NET и Azure IoT
UnmanagedCoder 16.05.2025
Мир меняется прямо на наших глазах, и интернет вещей (IoT) — один из главных катализаторов этих перемен. Если всего десять лет назад концепция "умных" устройств вызывала скептические улыбки, то. . .
Гибридные квантово-классические вычисления: Примеры оптимизации
EggHead 16.05.2025
Гибридные квантово-классические вычисления — это настоящий прорыв в подходах к решению сложнейших вычислительных задач. Представьте себе союз двух разных миров: классические компьютеры, с их. . .
Использование вебсокетов в приложениях Java с Netty
Javaican 16.05.2025
HTTP, краеугольный камень интернета, изначально был спроектирован для передачи гипертекста с минимальной интерактивностью. Его главный недостаток в контексте современных приложений — это. . .
Реализация операторов Kubernetes
Mr. Docker 16.05.2025
Концепция операторов Kubernetes зародилась в недрах компании CoreOS (позже купленной Red Hat), когда команда инженеров искала способ автоматизировать управление распределёнными базами данных в. . .
Отражение в C# и динамическое управление типами
stackOverflow 16.05.2025
Reflection API в . NET — это набор классов и интерфейсов в пространстве имён System. Reflection, который позволяет исследовать и манипулировать типами, методами, свойствами и другими элементами. . .
Настройка гиперпараметров с помощью Grid Search и Random Search в Python
AI_Generated 15.05.2025
В машинном обучении существует фундаментальное разделение между параметрами и гиперпараметрами моделей. Если параметры – это те величины, которые алгоритм "изучает" непосредственно из данных (веса. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru