2010-02-03 8 views
13

Мне нужно зашифровать строку (из текстовой области), которая также будет расшифрована позже, когда она будет отображаться.ruby ​​- как шифровать текст

Я не должен беспокоиться о том, что это безопасно, но просто не хочу хранить данные в текстовом формате.

Есть ли у кого-нибудь предложения по тому, как это сделать в Rails?

ответ

-26

Если вы не беспокоитесь о безопасности, вы можете просто base64-кодировать строку:

encoded = Base64::encode(string) 
decoded = Base64::decode(encoded) 

Кстати это также подходит для кодирования двоичных данных.

Это не шифрование, поскольку любой разработчик может даже предположить, что его кодированные Base64 данные.

+21

-1 Кодировка не является шифрованием. – Shyam

+1

Хотя вы упоминаете безопасность, случайная проверка поспешным разработчиком может заставить их забыть об этом. Поскольку вопрос касался шифрования, этот ответ на самом деле неверен. –

+7

Мне кажется, что @neutrino здесь немного тяжело. Ответчики верны, но он предисловие к его ответу «если вас не интересует безопасность». Я думаю, что все просто перестают реагировать на то, что он был выбран как «правильный», и разработчики, которые понимают разницу между кодировкой и шифрованием, обеспокоены тем, что кто-то, кто наткнулся на этот поток, будет использовать «правильный» ответ. Мне очень жаль, что я не смог отредактировать ответ, и это решило бы все проблемы. – hrdwdmrbl

14

Есть ли реализация ROT13 в Ruby/Rails (это должно быть ...), что совершенно небезопасно, кроме как для читателей-людей (и идиотских ученых), поэтому, похоже, подходит для вашего случая использования.

EDIT - Это хорошее начало для перекачки из символов:

$_.tr! "A-Za-z", "N-ZA-Mn-za-m"; 

Он запрашивает ввод пользователя, то переставляет символы.

EDIT Если вы не знакомы, ROT13 присваивает каждой букве свое натуральное число. A = 1, B = 2 и т. Д. Затем он добавляет 13 к каждому числу, эффективно вращая его на полпути вокруг алфавита. Halfway bit отлично, потому что, в отличие, скажем, ROT12, вы можете снова запустить ROT13 для декодирования. Одна функция для обоих. ИЛИ вы можете запустить ROT12 13 раз. Я думаю (12 * 13 = 156. 156/26 = 6.) ROT 13 лучше для этого.

+17

Только не думайте, что дважды ROT13 является более безопасным, как двойной RSA может быть. – tadman

20

Существует RubyGem с именем Crypt, который обеспечивает чистую реализацию Ruby ряда алгоритмов шифрования.

+0

Пример на своем веб-сайте дал мне ошибку, вместо этого пошел на шифрование! –

+1

Crypt не поддерживается на 1.9.1 или больше - по крайней мере в данный момент – pduersteler

16
gem install encryptor 

Он обертывает стандартную библиотеку Ruby OpenSSL и позволяет использовать любой из его алгоритмов.

http://github.com/shuber/encryptor

Смежные вопросы