Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Разбираюсь с md5 - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Рекурсивная функция... Очень надо... http://www.cyberforum.ru/cpp-beginners/thread232743.html
Народ помогите плиз. Нужно написать рекурсивную функцию перевода из 16 сс в 10 сс....Заранее спасибо
C++ прогрессия Подсчитать сумму первых 500 членов бесконечного ряда: 1+1/2+1/3+1/4+…+1/n+… Выведите значение суммы на экран Хелп ми)Пожалуйста http://www.cyberforum.ru/cpp-beginners/thread232739.html
C++ Реверсирование
Помогите пожалуйста! Задача Реверсировать число и увеличить его в 2 раза.
C++ endl
Объясните пожалуйста зачем вставлять эту функцию после выводимого потока например: cout<<....<<endl; Зачем она нужна и что выполняет?
C++ массив С++ for dos http://www.cyberforum.ru/cpp-beginners/thread232691.html
Дан Целочисленный массив A, среди элементов есть одинаковые. Создать массив из различных элементов A. #include <iostream.h> #include <conio.h> #include <stdlib.h> #include <stdio.h> void...
C++ на экзаменене срочно програма котора я определяет суммму элементов расположеных между максимальным и минмальным элементом заданой целочисленной послед. или исправте ошибки плиззззз #include <iostream.h> #include... подробнее

Показать сообщение отдельно
chesar
56 / 53 / 5
Регистрация: 15.12.2009
Сообщений: 231
Записей в блоге: 1
01.02.2011, 19:51  [ТС]
Хехе... Я ищо жЫв!
Вот, что есть на данный момент. Реализация первых двух шагов. За основу взят текст некого btf
Открываем файл, получаем его длинну, дополняем до кратности 512.
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
//---------------------------------------------------------------------------
 
#include <clx.h>
#include <stdio.h>
#include <conio.h>
#pragma hdrstop
 
//---------------------------------------------------------------------------
 
#pragma argsused
int main(int argc, char* argv[])
{
 
FILE *fp;
if((fp=fopen("D:\\wso.exe", "rb"))==NULL)
printf("\n\nError!!!. I can't open the file");
else
printf("\n\nI open the file");
//узнаем длинну:
fseek(fp, 0L, SEEK_END);
int length=ftell(fp);
printf("\n\nThe size of file is %ld bytes", length);
 
int rests=length%64; //остаток от деления на 64байта(512бит).
int size=0; //размер расширенного сообщения.
 
if(rests<56) //если остатот от деления меньше 56
{
size=length-rests+56+8; //подгоняем длину сообщения, что бы была кратна 64(+8байт для шага 2)
}
 
else //иначе
{
size=length+64-rests+56+8; //подгоняем длину сообщения, что бы была кратна 64(+8байт для шага 2) 
}
 
unsigned char *inChar=new unsigned char[size]; //массив char, в котором будет храниться входящее сообщение с расширенной длиной.
 
for(int i=0;i<length;i++) //от 0 символа до length
{
inChar[i]=fgetc(fp); //заполняем первые length символов inChar символами из входщей строки
}
inChar[length]=128; //добавляем 1 бит в конец потока(128(Dec)=0x80(HEX)=1000000(Bin))
for(int i=length+1;i<size;i++) //оставшуюся часть
{
inChar[i]=0; //заполняем нулями
}
 
//Step2:
 
unsigned long lengthBit=(unsigned long)length*8; //представление длины входящего сообщения в битах
unsigned char Bits[8]; //массив для 64-разрядного представления длин входящего сообщения
//далее заполняем массив младшими битами каждого байта
Bits[0]=lengthBit & 0xFF;
Bits[1]=(lengthBit >> 8) & 0xFF;
Bits[2]=(lengthBit >> 16) & 0xFF;
Bits[3]=(lengthBit >> 24) & 0xFF;
Bits[4]=(lengthBit >> 32) & 0xFF;
Bits[5]=(lengthBit >> 40) & 0xFF;
Bits[6]=(lengthBit >> 48) & 0xFF;
Bits[7]=(lengthBit >> 56) & 0xFF;
 
 
 
for(int i=0;i<8;i++) //каждый элемент массива Bits[]
{
inChar[size-8+i]=Bits[i]; //вставляем в последние 8 байт выравненной строки
}
 
printf("/n new size: %ld", size); int kr=size%64;
 
getch ();        return 0;
}
Слабо представляю, что творится с битами в этот момент. По байтам-то все четко. Но вот не изменяется ли битовая последовательность? Можно как проверить?
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru