1 votes

Je cherche un programme multiplateforme/portable qui produise des hachages cryptographiques d'un fichier.

Je suis à la recherche d'un programme, dont la source devrait être portable sous Windows et Linux (par exemple, ANSI C, etc.), qui génère des hachages cryptographiques tels que MD5, SHA, etc. ainsi que CRC32 d'un fichier ou d'une liste de fichiers qui lui sont transmis.

J'exécuterai cet exécutable sur des téraoctets de fichiers, en générant leurs signatures SHA, MD5 et CRC32 (et d'autres à l'avenir), de sorte que la rapidité d'exécution est primordiale. est important .

Ce que j'avais à l'esprit est exactement ce qu'est ReHash. ReHash , ReHash .

Malheureusement, j'ai vu que de nombreux utilisateurs se sont plaints d'erreurs dans la mise en œuvre des hachages ainsi que d'erreurs dans la manière dont le remplissage (pour les algorithmes basés sur des blocs) avait été mis en œuvre.

N'étant pas un expert en cryptographie, et cherchant simplement une solution boîte noire qui me donne simplement les hachages que je veux sans me demander si je peux faire mieux que de compiler du code, je me demandais s'il n'y avait pas mieux ?

Je pourrais, bien sûr, écrire un programme glue en Python qui utiliserait les modules cryptographiques pour générer ce que je veux, mais j'aurais préféré un binaire compilé à partir d'un langage comme le C.

Je vais faire tourner cet exécutable sur des téraoctets de fichiers, en générant leurs signatures SHA, MD5 et CRC32 (et plus à l'avenir) et en gérant tout cela à partir de code Python, donc quelque chose de compatible avec Python serait préférable, mais pas au détriment de la vitesse du C.

2voto

Les opérations cryptographiques de Python sont implémentées en code natif (compilé à partir de C). Puisque vous voulez les valeurs dans un programme Python, leur utilisation sera plus simple.

Linux est livré avec des utilitaires pour le calcul des sommes de contrôle ( cksum , md5sum , sha1sum , ...). Comme la plupart des autres unices. Il existe plusieurs ports Windows des utilitaires GNU (ce que vous obtenez sous Linux) : Cygwin , Gnuwin32 , Msys , ... Vous aurez besoin d'utilitaires assez récents si vous voulez obtenir SHA-256 et SHA-512.

Il existe plusieurs implémentations ANSI C avec des licences très libérales de divers algorithmes cryptographiques, souvent non regroupées dans une seule distribution. Vous pouvez les rechercher et les tester sur de petites entrées pour vérifier leur fiabilité.

Sous Windows, assurez-vous que vous traitez correctement les fichiers en tant que binaire ou texte, puisque les sommes de contrôle sont définies sur des flux d'octets, et non des flux de lignes. (Normalement, vous devriez ouvrir les fichiers en mode binaire, mais si vous avez un fichier texte qui a été transcodé en fin de ligne Windows, vous devrez l'ouvrir en mode texte pour inverser l'effet). Sous n'importe quel système d'exploitation, assurez-vous de ne pas effectuer de conversion d'encodage lors de l'ouverture du fichier.

Comme la vitesse est très importante pour vous, rassemblez toutes les implémentations que vous pouvez trouver et évaluez-les sur des données de taille moyenne (quelques mégaoctets). Différentes implémentations peuvent offrir une meilleure vitesse sur différentes architectures. Les implémentations 64 bits seront probablement plus rapides si vous pouvez les exécuter.

0 votes

Bien que les routines cryptographiques soient écrites en C, je n'ai pas remarqué de fonction prenant un nom de fichier comme argument. Cela signifie que je devrais ouvrir le fichier et le lire, etc - tout cela à partir de Python. Cela signifie que les performances ne seraient pas comparables à celles du C. En outre, je serais plus intéressé par une solution existante que par le déploiement de ma propre solution !

0 votes

Mais les routines du fichier sont également en C.

2voto

Lark Points 1640

OpenSSL a des outils qui calculent les hachages. Le programme cygwin ( http://www.cygwin.com/ ) a des outils openssl. Bien qu'il soit un peu plus lent qu'une application Windows pure en raison de la couche cygwin, vous obtiendrez également un environnement dans lequel vous pourrez script votre génération de hachage.

1 votes

Et Python dispose d'une liaison OpenSSL, ce qui en fait une alternative à la norme hashlib . La couche Cygwin ne devrait pas influencer la vitesse de calcul des entiers purs, mais la qualité du compilateur pourrait le faire (je suis sûr qu'il existe de meilleurs compilateurs pour win32/i386 que gcc de Cygwin, surtout si le 64 bits est possible).

0 votes

Alors lequel serait le plus rapide et correct : OpenSSL ou hashlib ?

1 votes

Les deux sont corrects, ils utilisent le même algorithme. Rapidement, il faudrait faire des tests. Je pense que la facilité d'implémentation et la facilité à parcourir votre énorme ensemble de données sont plus importantes que la vitesse brute.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X