1. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление

Шифруем слово в Md5

Тема в разделе "С и С++", создана пользователем Chrek625, 7 дек 2010.

Статус темы:
Закрыта.
  1. Chrek625

    Chrek625 Гость

    Репутация:
    0
    Доброго времени суток уважаемые форумчане.
    Использую VS2010.
    Пишу не большую программу в которой необходимо использовать md5 шифрование, всё что нужно нашёл всё работает, но столкнулся с проблемой поместить значение хеша в переменную.
    Все библиотеки взял с проекта polarssl и там же есть не большой пример получения хеша www.polarssl.org/show_source?file=hash/hello
    Там хеш в цикле выводиться на консоль, помогите как это значение перенести в переменную.


    Вот код по линку кто не хочет заходить
    Код:
    #ifndef _CRT_SECURE_NO_DEPRECATE
    #define _CRT_SECURE_NO_DEPRECATE 1
    #endif
    
    #include <stdio.h>
    
    #include "polarssl/md5.h"
    
    int main( void )
    {
    int i;
    unsigned char digest[16];
    char str[] = "Hello, world!";
    
    printf( "\n MD5('%s') = ", str );
    
    md5( (unsigned char *) str, 13, digest );
    
    for( i = 0; i < 16; i++ )
    printf( "%02x", digest[i] );
    
    printf( "\n\n" );
    
    #ifdef WIN32
    printf( " Press Enter to exit this program.\n" );
    fflush( stdout ); getchar();
    #endif
    
    return( 0 );
    }
    пробовал
    Код:
    sprintf((char*)test, "%02x", digest[i]);
    но полностью поместить хешь в переменную не получается.
    Помогите пожалуйста кто чем может.
     
  2. lazybiz

    lazybiz Well-Known Member

    Репутация:
    0
    Регистрация:
    3 ноя 2010
    Сообщения:
    1.339
    Симпатии:
    0
    На выходе md5 16-байтный результат. Он у тебя уже получается в переменной (а точнее в массиве) digest. Что значит перенести в переменную? Скажи что именно тебе нужно.
     
  3. Chrek625

    Chrek625 Гость

    Репутация:
    0
    Забыл отписаться, Проблему решил.
     
  4. lazybiz

    lazybiz Well-Known Member

    Репутация:
    0
    Регистрация:
    3 ноя 2010
    Сообщения:
    1.339
    Симпатии:
    0
    Напиши хоть как решил и в чем была проблема.
     
  5. Chrek625

    Chrek625 Гость

    Репутация:
    0
    да мне нужно было шестнадцатеричный результат сразу в переменную записать, то есть чтобы 32 символьный хэшь был в читабельном виде в переменной,
    сделал просто в цикл всунул функцию append

    Код:
    string last_result;
    unsigned char digest[16];
    char test[32];
    
    int amt = strlen(str);
    md5( (unsigned char *) str, amt, digest );
    for( int i = 0; i < 16; i++ ) {
    sprintf((char*)test, "%02x", digest[i]);
    last_result.append(test);
    }
    ну на выходе функции и получил значение хэша в стринговской переменной last_result
     
  6. lazybiz

    lazybiz Well-Known Member

    Репутация:
    0
    Регистрация:
    3 ноя 2010
    Сообщения:
    1.339
    Симпатии:
    0
    так он же у тебя и был в стринговой переменной!) шило на мыло поменял!?)
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей