Не точно ответ, который Вы ищете, но большой ресурс на пиратстве от разработчика игр, который активно спросил их пираты о том, почему они делают это. И связан с первой частью ответа, который Вы выбираете.
Readi это в Говорящий с Пиратами .
Если вас устраивает потенциальная ответственность, когда хакер проникает в вашу базу данных / файловую систему, сделайте это. И, честно говоря, вы также должны сообщить своим пользователям, что их пароли будут храниться в вашей системе, и позволить им решить, хотят ли они предоставить вашей программе такой уровень доверия.
Но зачем это вообще? Facebook Connect, Twitter и Google с помощью OAuth вам вообще не нужно хранить пароли пользователей. В какой-то момент срок действия файлов cookie пользователя истечет (или они попытаются получить доступ к вашему сайту с другого компьютера), и им придется пройти повторную аутентификацию. Вы не можете предотвратить повторную аутентификацию - вместо этого вы должны максимально упростить ее обработку для конечного пользователя.
Я предполагаю, что вашему приложению необходимо знать пароль в виде открытого текста. Тогда нет никакого способа сохранить его каким-либо простым способом.
Нет ничего плохого в хранении большого количества данных в вашей файловой системе. Для лучшей производительности вы можете сделать следующее
. Вы можете использовать базу данных вместо файловой системы
Такие службы предоставляют авторизацию OpenAuth . Вам настоятельно рекомендуется взглянуть на него.
Вот как это работает, например, для fetcmailrc, который должен иметь chmod до 600 (чтение и запись может выполнять только его владелец). И да, он содержит простой пароль.
Я настоятельно рекомендую вам использовать OAuth, но если вам нужно сохранить пароли (будьте абсолютно уверены, что вам это нужно), вы можете использовать OpenSSL библиотека для шифрования паролей. Библиотека OpenSSL довольно плохо документирована в Ruby, но, насколько мне известно, они очень похожи на библиотеку C OpenSSL. Поскольку я считаю, что вам следует использовать OAuth, а не хранить пароли, я позволю вам найти документацию самостоятельно.
Однако для подхода OAuth вам стоит взглянуть на гем OAuth . Google , Twitter (для которого я рекомендую вам использовать отличный twitter gem) и facebook (у которого есть две, казалось бы, хорошие альтернативы: RFacebook и facebooker )