2013-03-20 4 views
1

Я пытаюсь зашифровать некоторый текст с помощью sjcl (Stanford Javascript Crypto Library) в моем проекте Titanium (цель: iOS и Android). Я использую самый простой способ, без опций:Невозможно использовать sjcl в Appcellerator Titanium project

sjcl.encrypt("mypassword", "mytext"); 

приложение просто висит на этой линии, я не получаю сообщение об ошибке или никакой полезной информации. Что мне не хватает?

Спасибо!

+0

Вы включили sjcl.js и сохранили все файлы sjcl.zip в папке и включили в каталог проекта –

+0

Да, я сделал ... на этом изображении вы можете увидеть структуру (также некоторые ненужные части остались в пакете): http://weibezahn.com/sjclscreen.png –

ответ

0

Код, вероятно, отлично работает. Однако первый алгоритм пытается использовать функцию PBKDF2 для создания ключа из пароля. Эта функция намеренно замедляется, чтобы укрепить пароль, поскольку пароли обычно не содержат достаточной энтропии, чтобы быть безопасными для использования в шифровании. Если структура (отладка) занимает много времени для выполнения основных хеш-функций, ваше приложение может оказаться зависающим (проверьте использование вашего ЦП).

Решение состоит в том, чтобы либо уменьшить количество итераций, которые PBKDF2 принимает в качестве входных данных, либо использовать Java PBKDF2. Оба, возможно, требуют доступа на более низкий уровень доступа к SJCL. Наконец, выбор библиотеки JavaScript для шифрования на платформе Java значительно снизит производительность. Вы можете рассмотреть возможность отмены SJCL для этой цели.

+0

Я попытался уменьшить количество итераций, но безрезультатно. Интересно отметить, что если я установил количество итераций на их демо-странице http://bitwiseshiftleft.github.com/sjcl/demo/ ("strenghten") до 10, например, сбой сценария. Я также попытался использовать прямой шестнадцатеричный ключ, так что его не нужно вычислять с помощью sjcl, но без успеха ... Мне нужно, в основном, очень мелкое шифрование (обфускации было бы достаточно), поскольку данные вряд ли будут доступны тем, кто не знает об этом и не имеет большого значения. Можете ли вы порекомендовать что-то в javascript для этого? Благодаря! –

+0

Я бы не рассматривал SJCL хорошо известную криптографическую библиотеку. Как только я начал использовать его, быстро выяснилось, что данные AAD для аутентифицированного шифрования в режиме CCM вообще не были включены в расчет (ошибка в удобных libs). К сожалению, я не использовал слишком много JavaScript-криптографических API, главным образом потому, что я думаю, что браузеры не должны выполнять какую-либо задачу, связанную с криптографией (хотя это должно быть хорошо в доверенном приложении). Как уже было сказано, имеет смысл создавать собственные функциональные возможности для каждой платформы и использовать их из JavaScript. –

+0

Im подозрительно, что производительность является проблемой, я получаю время ответа второй секунды, используя этот точный код в чистой реализации браузера. Библиотека sjcl является одной из наиболее высоко оцененных криптографических библиотек, хотя -> http://www.matasano.com/articles/javascript-cryptography/ для получения дополнительной информации об этом –

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