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

md5 и указатели - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ malloc(): memory corruption и corrupted double-linked list http://www.cyberforum.ru/cpp-beginners/thread862338.html
всем привет! такой вопрос. пытаюсь попробовать простой пример кода для функции MPI_Allgatherv на кластере. В итоге получаю следующую ошибку(и) : *** glibc detected *** ./main: malloc(): memory corruption: 0x0000000001ee6820 *** *** glibc detected *** ./main: corrupted double-linked list: 0x0000000001285510 *** все идет нормально до самой функции, после чего мне приходится прерывать...
C++ Клас с полем типа другого класа Есть клас car с полями и методом заполнения етих полей. Надо написать клас tz в котором есть поле типа сar и пару других полей и метод заполнения даных в етот клас. как ето сделать. как заполнить поле car класа tz? class CAR { char corporation; char car_name; int price; int made_date; public: void INP() { http://www.cyberforum.ru/cpp-beginners/thread862329.html
Генератор случайных чисел C++
Всем привет, вот такая задачка. "Датчики случайных чисел можно привлекать при подборе проверочных исходных данных для программ. а) 25 действительных чисел, лежащих в диапазоне от -50 до 50. б) 30 целых чисел, лежащих в диапазоне от -20 до 20. #include <iostream> #include <stdlib.h> #include <time.h> using namespace std;
Вычислить значение выражения C++
Сама суть проблемы: мне нужно сделать 5 лабораторных работ по с++, просто написать программы. Они не сложные, любой начинающий в них справиться, но из-за того, что у меня были проблемы со здоровьем (поломал 2 руки и ногу) я почти весь второй семестр пролежал в больнице. Поэтому я не могу разобраться в этих лабораторных. Пришел сюда просить помощи, летом планирую пойти к репетитору. Сейчас нет...
C++ Связывание классов в 1 файле http://www.cyberforum.ru/cpp-beginners/thread862297.html
Здравствуйте! Разрабатывая программу столкнулся с проблемой... в 1 файле разместил несколько классов которые нужно между собой связать... так чтобы из одно класса вызывалась функция с другого класса... Вот пример .h файла #include <fstream> #include <iostream> #include <string.h> #include <windows.h> #include "variables.h"
C++ Массив: Какое количество элементов расположено после первого ну-левого элемента до конца массива? Помогите пожалуйста написать программу для массивов. 1.Задан одномерный числовой массив, в котором есть хотя бы один нуле-вой элемент. Какое количество элементов расположено после первого ну-левого элемента до конца массива? подробнее

Показать сообщение отдельно
Schilling
0 / 0 / 0
Регистрация: 03.06.2012
Сообщений: 5
12.05.2013, 13:09     md5 и указатели
Здравствуйте!

Есть функция md5 взятая из openssl, с помощью нее нужно сгенерировать хеш, данные для которого поступят из функции RSA, затем, нужно будет вернуть хеш в RSA для подписи.

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

Коды и хэши привожу ниже.

Помогите пожалуйста, может я просто не понимаю каких либо основ, но это заключительная лаба и от ее понимания и успеха зависит многое.


Код изначальный, с забитым вручную значением.

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
#include <stdio.h>
#include <stdlib.h>
#include <openssl/md5.h>
#include "stdafx.h"
#include <conio.h>
#include <string>
using namespace std;
 
 
 
 
int main() {
    int i;
 
    MD5_CTX md5handler;
    unsigned char md5digest[MD5_DIGEST_LENGTH];
     
    MD5_Init(&md5handler);
    MD5_Update(&md5handler, "Hello" , 5);   
    
    MD5_Final(md5digest,&md5handler);
       
    for (i=0;i<MD5_DIGEST_LENGTH;i++) {
        printf("%02x",md5digest[i]);
    };
         
    printf("\n");
    getch();
    return 0;
};
хэш : 8b1a9953c4611296a827abf8c47804d7



Код c указателем на переменную.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int main() {
    int i;
    string st="Hello";
    MD5_CTX md5handler;
    unsigned char md5digest[MD5_DIGEST_LENGTH];
     
    MD5_Init(&md5handler);
    MD5_Update(&md5handler, &st , 5);   
    
    MD5_Final(md5digest,&md5handler);
       
    for (i=0;i<MD5_DIGEST_LENGTH;i++) {
        printf("%02x",md5digest[i]);
    };
         
    printf("\n");
    getch();
    return 0;
};

хэш : e6aa34c71fd076a130f8180b08662de5


Код c указателем на переменную, но присваиваю я значение ей по другому.


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int main() {
    int i;
    string st("Hello");
    MD5_CTX md5handler;
    unsigned char md5digest[MD5_DIGEST_LENGTH];
     
    MD5_Init(&md5handler);
    MD5_Update(&md5handler, &st , 5);   
    
    MD5_Final(md5digest,&md5handler);
       
    for (i=0;i<MD5_DIGEST_LENGTH;i++) {
        printf("%02x",md5digest[i]);
    };
         
    printf("\n");
    getch();
    return 0;
};
хэш : f61d5c6aa103f7d07b93de1db514076f


Я не могу понять, почему всегда разные хеши на выходе, помогите пожалуйста.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 16:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru