Dans lequel la bibliothèque est le MD5() la fonction?

Que je suis en train d'écrire le code à installer sur une machine cible, je me demandais sur les dépendances et remarqué qu'il n'y avait pas de bibliothèque openssl nécessaire. Je me demandais parce que je sais que je suis en utilisant OpenSSL:

#include <openssl/md5.h>

...
MD5(a, b, c);
...

À ma grande surprise, il semble que nous obtenons seulement lié à l'encontre de la libc. Est-MD5 vraiment mis en œuvre dans la libc et non dans la libssl bibliothèque?


objdump me donne les infos à propos de la bibliothèque de liens:

Dynamic Section:
  NEEDED               libQtCore.so.4
  NEEDED               libstdc++.so.6
  NEEDED               libgcc_s.so.1
  NEEDED               libc.so.6
  SONAME               libcontent.so

Comme suggéré par noloader j'ai essayé avec la commande ldd et de ne toujours pas voir une bibliothèque qui aurait du sens pour le MD5. libcontent.donc, est directement à l'aide de MD5()...

ldd ../BUILD/snapwebsites/plugins/content/libcontent.so 
    linux-vdso.so.1 =>  (0x00007fff4f3ff000)
    libQtCore.so.4 => /usr/lib/x86_64-linux-gnu/libQtCore.so.4 (0x00007ff37ad0f000)
    libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007ff37aa0c000)
    libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007ff37a7f5000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007ff37a42c000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007ff37a20f000)
    libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007ff379ff7000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007ff379df3000)
    libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007ff379af7000)
    librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007ff3798ee000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007ff3795e9000)
    /lib64/ld-linux-x86-64.so.2 (0x00007ff37b5e5000)
    libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007ff3793a9000)

Aussi, juste pour être sûr, j'ai essayé nm sur que le contenu de la bibliothèque et je peux voir le MD5 d'entrée:

                 w _ITM_registerTMCloneTable
00000000003c9468 d __JCR_END__
00000000003c9468 d __JCR_LIST__
                 w _Jv_RegisterClasses
                 U MD5                       <---- it's here...
                 U memcmp@@GLIBC_2.2.5
                 w pthread_cancel
                 U pthread_mutex_destroy@@GLIBC_2.2.5
Comment avez-vous appris que ce binaire est uniquement lié à l'encontre de la libc?
Qu'allez-vous être à l'aide de MD5?
J'ai fait une mise à jour avec la sortie de objdump -x.
Je l'utilise déjà. Je suis en train de travailler sur un CMS pour les sites web. Lorsque vous téléchargez un fichier, je calcule le MD5 et de l'utiliser comme clé dans la base de données Cassandra (l'ID, si vous le souhaitez). Il fonctionne très bien, je suis juste surpris qu'un correspondant .il n'est donc pas présent.
Ce n'est qu'une bibliothèque, libcontent.so , à proprement parler, il n'a pas besoin de lien vers une bibliothèque qui fournit MD5(). Mais quelle que soit l'application qui se charge de cette bibliothèque.

OriginalL'auteur Alexis Wilke | 2014-02-21