симметричное шифрование с ключом для javascript и ruby - PullRequest
4 голосов
/ 02 сентября 2011

Я хочу закодировать число длиной не более 10 цифр, используя ключ с символами ASCII.

Закодированная строка должна быть декодируемой с тем же ключом, который должен возвращать декодированное число.

10 => encoding_with("secret_pass") => hash => decoding_with("secret_pass") => 10

Обе операции должны работать одинаково в Javascript и Ruby.

Какой алгоритм мне использовать для этой цели?

Все данные должны быть в ASCII, без многобайтовых данных для ввода, хеша и ключа.

Ответы [ 3 ]

4 голосов
/ 02 сентября 2011

Достаточно простого XOR.

JavaScript

рубин

Да, вы можете пойти за борт и разорвать полный набор криптографии, но поскольку одна часть алгоритма будет работать в браузере, в JS (полностью ненадежная среда) любая попытка Serious Cryptography ™ даст вам ложное чувство из безопасность (другими словами, фактически сделает вашу систему менее защищенной).

Если вы пытаетесь защитить данные при передаче, используйте инструмент, созданный для этой работы; в этом случае HTTPS.

2 голосов
/ 02 сентября 2011

Я хотел бы взглянуть на некоторые из Симметричный ключ шифрования , и наиболее выдающийся AES. AES в значительной степени стандарт и реализован на обоих языках. Просто используйте один и тот же ключ и соль для шифрования и дешифрования.

Javascript AES

Рубиновый AES

1 голос
/ 02 сентября 2011

Если вы хотите, чтобы это было просто, и безопасность не представляет большой проблемы (так как javascript ... наблюдение в комментариях), самый простой способ - просто сгенерировать любое случайное значение, большее (больше цифр), чемчисло, и просто XOR это с номером.Предполагается, что ключ (= случайное число) будет ранее передан другой программе.

1. generate random number with 10 hex digits -> KEY
2. take the number then do (number XOR key ) -> result
3. send result
4. get the result and do (result XOR key) -> number

Что-то лучше (сильнее) будет использовать любую систему открытых и закрытых ключей.Обмен ключами, шифрование с открытым с одной стороны, дешифрование с закрытым с другой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...