9
votes

Mise en œuvre de BCRYPT.NET préférée

Il y a quelques ports différents de BCRYPT.NET et il est très difficile de dire quel est le "meilleur".

Quelqu'un a-t-il pris le temps de les examiner et de faire une conclusion quant à quel projet de fréquentation? Je suis le plus intéressé par la communauté des développeurs la plus active. Bien sûr, l'ensemble des fonctions, l'efficacité, la simplicité et la documentation sont bien aussi :)

Voici la liste des implémentations BCRYPT.NET J'ai été capable de suivre:

Derek Slager

Autant que je puisse dire, c'est le premier port et n'a pas été mis à jour depuis un moment. Version 0.1

Google Code

L'utilisateur a enregistré la copie de Derek Slager sur le code de Google et apporté des améliorations. Version 0.3

Nuget

La seule version de Nuge de Visual Studio, c'est une copie compilée sans source, donc je ne sais rien à ce sujet à coup sûr. Il semble supporter une nouvelle fonction uniquement disponible dans la version 0.3 Google Code Edition. Il n'indique aucun site de support et je ne peux pas dire s'il est open source et n'a aucune attribution d'aucune sorte (un peu sombre). Version 1.0, 213 téléchargements.

Code Plex

Cela semble être un port totalement indépendant sans aucun lien avec le port de Derek Slager. Il semble avoir des mises à jour semi-régulières. Version R5, 140 téléchargements.

Cette liste est-elle complète? Y a-t-il une raison de choisir un sur l'autre?


0 commentaires

3 Réponses :


1
votes

Pour être honnête, j'ai utilisé deux des trois que vous avez énumérées et je n'ai trouvé aucune différence autre que les noms de méthodes. Il semble qu'ils font la même chose.

J'ai préféré utiliser le package Nuget car il était plus simple d'intégrer avec les projets existants. J'ai même écrit un petit article sur la manière de l'accomplir avec le gestionnaire de packages Nuget.

http://sergiotapia.com/2011/03/USTION-BCRYPT-IN-A-NET-Application-Why-its-better-Than-sha-or-md5/


2 commentaires

Nice blog post et j'utilise Nuget aussi. Je vais attendre d'accepter une réponse, cependant. J'espère que quelqu'un a fait l'analyse.


Ce lien est maintenant mort. Toute autre source?



2
votes

Malheureusement, au 4 oct. 2012, je dirais que aucun des algorithmes énumérés ci-dessus n'est suffisant. Par cet article (http://fr.wikipedia.org/wiki/crypt_(Unix)), il y avait une faille découverte dans l'algorithme en 2011. Un hachage BCRYPT correct devrait maintenant commencer par 2 ans $ au lieu de $ 2A $. Je cherche toujours un algorithme moi-même.


3 commentaires

Merci @rob Kraft, c'est exactement pourquoi j'aime donc: les réponses sont mises à jour. S'il vous plaît laissez-moi savoir si vous trouvez une meilleure mise en œuvre


J'ai trouvé cette bibliothèque de nugets: Cryptshaparpe et il semble certainement pouvoir vérifier les hachages à partir de 2Y $ $


J'ai blogué sur la mise en œuvre que j'ai trouvée et utilisée ici: csharpdeveloper.wordpress.com/2012/10/09/...



4
votes

Initialement examinée à février 2013, mis à jour avec Info des commentaires de Justin et Coulton, et de refléter mon utilisation actuelle.

Plus d'entre eux semblent être sécurisés, ou au moins "sans bugs connus". (Il existe d'autres faiblesses dans BCRYPT mais elles sont algorithmiques plutôt que liées au code. Je suppose que si vous utilisez bcrypt vous connaissez déjà à propos de celles-ci.)

Les bibliothèques énumérées dans la question sont toutes basées sur le code JBCRYPT (sauf peut-être que CryptShaRP, aucune idée), qui a reçu des corrections de bugs à février 2010 pour fixer l'avis de sécurité "Faible entropie". ( http://www.mindrot.org/files/jbcrypt/internat.adv)

panne:

  • Le port de Codépleplex de Bcrypt a été lancé à la fin de 2010 (vérification en décembre) et a été mis à jour sur des sources plus récentes en 2013. Il est presque certainement sûr et disponible sur Nuget (https://www.nuget.org/ Forfaits / BCRYPT-OFFICIEL /).< LI>
  • cryptshaparp (http://www.zer7.com/software/cryptshacharp) est un projet vivant et pris en charge qui a l'air très bien fait, mais je n'ai pas évalué cela en profondeur. Vaut certainement la peine de vérifier. Également disponible sur Nuget (http://www.nuget.org/packages/cryptshaparpofficial/).
  • La version de code Google ChangeLog indique qu'il incorpore les corrections de bugs `jbCrypt` feb 2010. Mais c'est un peu ancien et mort.
  • Le port de 2007 de Derek Slager fait probablement ** PAS ** Ayez ces corrections, je pense que vous devriez l'éviter.

    Chronologie approximative, en fonction des journaux de changement de contrôle de révision:

    1. Derek Slager a fait un port de JBCRYPT en 2007
    2. Cela a été importé dans Google Code et mis à jour un peu en octobre 2010.
    3. Le code CODEPLEX de Ryan D. Emerle a commencé avec une version ultérieure de JBCRYPT comme source (fin 2010). Cette importation est datée * après * la dernière modification de la version de Google Code. Cela a été mis à jour sur la dernière source en novembre 2013.
    4. CryPtSharp a été initialement publié en novembre 2010, avec des versions régulières à travers le présent (déc. 2014). Écrit à partir de zéro ??

      J'utilise actuellement la version codépex , telle qu'elle semble être maintenue et se présente tôt dans les résultats de la recherche Google.

      sur le crypt_blowfish bug: (j) bcrypt.net est une implémentation autonome de l'algorithme et ne dépend pas de la bibliothèque UNIX CRYPT_BLOWFISH . Donc, il ne devrait pas être affecté du tout. C'est en retard pour une réécriture de prendre en charge le format $ 2Y $, cependant.


2 commentaires

La mise en œuvre sur CodePlex est également hébergé sur Nuget depuis juin 2011 et a été mis à jour pour la dernière source en novembre 2013.


Je consulterais CryPTShaRP ... Il semble que c'est à jour et compatibilité Avec 2Y $ hachage et également la compatibilité en arrière avec les anciennes versions pour simuler le bogue connu de Blowfish.