четверг, 29 апреля 2010 г.

Генератор паролей для онлайн-сервисов

При использовании нескольких веб-сервисов существует опасность взлома одного из них и получения злоумышленником пароля пользователя. Ущерб от этого возрастает многократно, если пользователь поленился использовать различные пароли для всех сервисов. Простой способ иметь общий секрет для всех сервисов, но разные пароли к ним - это порождение паролей с помощью хэш-функции от секрета с добавлением уникальной строки для каждого сервиса. При этом пароли все будут разные, секрет надо будет запомнить только один, а восстановить секрет, даже если злоумышленник завладел одним или несколькими паролями, будет достаточно сложно. Вот алгоритм, который использую я (bourne shell):

echo "Service name:"
read s
echo "User name:"
read u
echo "Secret password:"
read p
ts=`echo "$u@$s" | sha1sum | cut -f 1 -d ' '`
ps=`echo "$p" | sha1sum | cut -f 1 -d ' '`
key=`echo "$ts:$ps" | sha1sum | cut -b 1-12`
echo $key