Функция Unix crypt() в smalltalk/pharo

Я хочу закодировать пароли для учетных записей UNIX с помощью функции crypt. Я использую Фаро 1.0. Я попытался установить крипто-пакет из squeakmap, но это выдало мне ошибку, и пакет, кажется, был частично установлен (категории без класса).

Как я могу зашифровать свой пароль? Я готов вызвать внешний код, если это необходимо (и в SqueakMap есть пакет, который делает трюк в pharo).

Спасибо.


person jdinunzio    schedule 17.06.2010    source источник


Ответы (4)


Посмотрите, есть ли у вас в образе категория System-Digital Signatures с классом SecureHashAlgorithm. Затем вы можете хэшировать свой пароль следующим образом:

(SecureHashAlgorithm new hashMessage: 'my password') asString
person Janko Mivšek    schedule 17.06.2010
comment
Спасибо! На самом деле, у меня есть этот класс. Это дает мне: (SecureHashAlgorithm new hashMessage: 'мой пароль') asString. '930408691521612642154581053007002882786966762294' Но мне нужен хешированный пароль для учетных записей unix, поэтому они должны быть в одном из традиционных форматов шифрования: {crypt}0R9nvENe5JUlE {crypt}$1$8xbtm8Xw$G4HYuFl2fPRUgUBge26CN/? Спасибо еще раз. - person jdinunzio; 18.06.2010
comment
Вышеупомянутый класс использует хэш-алгоритм SHA. Какой алгоритм использует крипту в наши дни? Другая возможность - вызвать какую-то внешнюю программу с соответствующими параметрами, используя класс OSProcess. - person Janko Mivšek; 18.06.2010

В Pharo проверьте категорию: System-Hashing.

Там у вас есть MD5 и SHA.

Классы: SHA1, MD5NonPrimitive, MD5.

Эти классы были извлечены из криптопакета от squeaksource и заставили их работать в Pharo. Затем в ядро ​​были интегрированы MD5 и SHA.

Ваше здоровье

person Mariano Peck    schedule 21.06.2010

В репозитории Cryptography есть пакет PasswordHashingFFI, который использует FFI для доступа к библиотеке crypt(3) в Linux.

Это здесь:

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

Использование похоже на

CryptLinuxFFI sha256:'1234'
person Paul DeBruicker    schedule 20.06.2013

OSProcess можно использовать для вызова любой внешней программы. Взгляните на http://book.pharo-project.org/book/PharoTools/OSProcess/

person Damien Cassou    schedule 21.06.2013