2010-06-17 26 views
4

Je souhaite coder les mots de passe pour les comptes UNIX à l'aide de la fonction crypt. J'utilise pharo 1.0. J'ai essayé d'installer le paquet crypto de squeakmap, mais il me donne une erreur et le paquet semble être partiellement installé (catégories sans classe).Fonction Unix crypt() dans smalltalk/pharo

Comment puis-je obtenir mon mot de passe crypté? Je suis prêt à invoquer du code externe, si c'est nécessaire (et il y a un paquet dans SqueakMap qui fait l'affaire dans pharo).

Merci.

Répondre

3

Regardez si vous avez une catégorie System-Digital Signatures dans votre image, avec un class SecureHashAlgorithm. Vous pouvez ensuite hacher votre mot de passe comme suit:

+0

Merci! En fait, j'ai cette classe. Il me donne: (SecureHashAlgorithm nouveau hashMessage: 'mon mot de passe') asString. '930408691521612642154581053007002882786966762294' Mais, j'ai besoin du mot de passe haché pour les comptes unix, ils doivent donc être dans l'un des formats traditionnels de la crypte: {crypte} 0R9nvENe5JUlE {crypte} $ 1 8xbtm8Xw $ G4HYuFl2fPRUgUBge26CN/ $ Y at-il un méthode pour cela? Merci encore. – jdinunzio

+0

La classe ci-dessus utilise l'algorithme de hachage SHA. Quel algorithme utilise la crypte ces jours-ci? Une autre possibilité serait d'appeler un programme externe avec des paramètres appropriés, en utilisant la classe OSProcess. –

3

Dans Pharo, vérifiez la catégorie: Hachage système.

Là vous avez MD5 et SHA.

Classes: SHA1, MD5NonPrimitive, MD5.

Ces classes ont été extraites du paquetage crypto de squeaksource, et les font fonctionner dans Pharo. Puis MD5 et SHA ont été intégrés dans le noyau.

Vive

2

Il y a le paquet PasswordHashingFFI dans le référentiel de Cryptography qui utilise la bibliothèque FFI pour accéder à la crypte (3) sur linux.

Son ici:

http://www.squeaksource.com/Cryptography.html

utilisation est comme

CryptLinuxFFI sha256:'1234'