Linux-Bulgaria.ORG
навигация

 

начало

пощенски списък

архив на групата

семинари ...

документи

как да ...

 

 

Предишно писмо Следващо писмо Предишно по тема Следващо по тема По Дата По тема (thread)

lug-bg: md5 digest + openssl


  • Subject: lug-bg: md5 digest + openssl
  • From: Aleksandar Valchev <hippo@xxxxxxxxxxxxxxxxxx>
  • Date: Mon, 28 Feb 2005 14:27:27 +0200
  • Organization: Efficient Software Systems

Здравейте,
Опитвам се да пресметна md5 сума на файл с помоща на openssl.

В EVP_DigestUpdate(3) е даден малък пример. Аз го използвах и допълних малко 
т.е. чета съдържанието на файл(подаден като аргумент) и търся md5 сумата. 
Разбира се, че нещо не стана както трябва. Когато пресметна md5 сума на файл,
с долния пример, ми излиза различна сума от пресметната с md5sum програмата.

Подобен проблем видях при Java, който май беше свързан с encoding-а. Мисля си, 
че тук проблема може да идва от начина по който чета файла (би трябвало 
грешката да идва от грешни входни данни). При инициализирането и използването 
на функциите на openssl библиотеката не виждам да има нещо грешно.

#include <stdio.h>
#include <openssl/evp.h>

FILE *getFile(const char *filename);

int main(int argc, char *argv[])
{
 EVP_MD_CTX mdctx;
 const EVP_MD *md;
 unsigned char md_value[EVP_MAX_MD_SIZE];
 char buffer[BUFSIZ];
 int md_len, i;
 FILE *f;
 
 OpenSSL_add_all_digests();

 if (!argv[1]) {
  printf("Ussage: %s digestname filename\n");
  exit(EXIT_FAILURE); 
 }
 
 
 md = EVP_get_digestbyname(argv[1]);
 
 if (!md) {
  printf("Unknown message digest\n");
  exit(EXIT_FAILURE); 
 }
 
 f = fopen(argv[2], "r");
 if (NULL == f) {
  printf("Can not open %s\n", argv[2]);
  exit(EXIT_FAILURE); 
 }

 EVP_MD_CTX_init(&mdctx);
 EVP_DigestInit_ex(&mdctx, md, NULL);

 while (!feof(f)) {
  fscanf(f, "%s", buffer);
  printf("%s\n", buffer);
  EVP_DigestUpdate(&mdctx, buffer, strlen(buffer));
 }
 
 
 fclose(f); 
 
 EVP_DigestFinal_ex(&mdctx, md_value, &md_len);
 EVP_MD_CTX_cleanup(&mdctx);
 
 for (i = 0; i < md_len; i++) {
  printf("%x", md_value[i]); 
 }
 
 printf("\n");
 
 return EXIT_SUCCESS; 
}
============================================================================
A mail-list of Linux Users Group - Bulgaria (bulgarian linuxers).
http://www.linux-bulgaria.org - Hosted by Internet Group Ltd. - Stara Zagora
To unsubscribe: http://www.linux-bulgaria.org/public/mail_list.html
============================================================================



 

наши приятели

 

линукс за българи
http://linux-bg.org

FSA-BG
http://fsa-bg.org

OpenFest
http://openfest.org

FreeBSD BG
http://bg-freebsd.org

KDE-BG
http://kde.fsa-bg.org/

Gnome-BG
http://gnome.cult.bg/

проект OpenFMI
http://openfmi.net

NetField Forum
http://netField.ludost.net/forum/

 

 

Linux-Bulgaria.ORG

Mailing list messages are © Copyright their authors.