2013-03-05 2 views
3

Мне нужно будет зашифровать некоторый контент, прежде чем сохранять его на локальном хранилище в html5 и JS, на данный момент я использую Stanford Javascript Crypto Library.Понимание криптографии JavaScript с использованием библиотеки криптографии в Стэнфорде

В настоящий момент я использую такой код.

usernameEnc = sjcl.encrypt("password", username); 
passwordEnc = sjcl.encrypt("password", password); 
localStorage.username = usernameEnc; 
localStorage.password = passwordEnc; 

Я могу зашифровать правильно. Поскольку я создаю приложение HTML5 с JS, а JS-код загружается в клиенте, как я могу защитить PASSWORD, чтобы избежать легко расшифровать скрипт?

Возможно, я скучаю по точке. Я немного озадачен.

+2

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

ответ

4

К сожалению, у вас нет возможности защитить ваш ключ. Это JavaScript, и его нужно каким-то образом загрузить в браузере. Вы можете запутать ключ, чтобы сделать его немного трудным, но кто-то со средним знанием сможет его сломать.

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

Не используйте пароль пользователей так, как есть. Используйте функцию деривации ключа, такую ​​как PBKDF2. В версии crypto-js library реализована реализация JavaScript для PBKDF2.

В любом случае, что-то, что вы должны знать, заключается в том, что если ваше приложение может прочитать его на стороне клиента, кто-то решит его прочитать, независимо от того, насколько сильно вы пытаетесь его защитить.

+1

Thanks @Henrik для редактирования! :) –

+0

SSL может использоваться для защиты кода, запущенного в браузере, поэтому он будет включать пароль. –

+1

@owlstead: Да, он будет защищать, пока он передается между сервером и браузером. –

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