Есть ли в Javascript библиотека для 256-битного шифрования AES?
javascript
encryption
aes
кодировщик
источник
источник
Ответы:
JSAES - мощная реализация AES на JavaScript. http://point-at-infinity.org/jsaes/
источник
Вот демонстрационная страница , использующая slowAES.
slowAES было легко использовать. Логично оформленный. Разумная оригинальная упаковка. Поддерживает ручки и рычаги, такие как IV и режим шифрования. Хорошая совместимость с .NET / C #. Имя насмешливое; он называется « медленным AES», потому что он не реализован в C ++. Но в моих тестах это не было непрактично медленным.
В нем отсутствует режим ECB. Также отсутствует режим CTR, хотя, я думаю, вы могли бы довольно легко создать его с помощью режима ECB.
Он ориентирован исключительно на шифрование. Хороший дополнительный класс, который выполняет вывод ключей на основе пароля в соответствии с RFC2898 в Javascript, доступен от Anandam . Эта пара библиотек хорошо работает с аналогичными классами .NET. Хорошее взаимодействие. Хотя, в отличие от SlowAES, Javascript PBKDF2 заметно медленнее, чем класс Rfc2898DeriveBytes при генерации ключей.
Неудивительно, что технически существует хорошее взаимодействие, но ключевым моментом для меня была модель, принятая в SlowAES, знакомая и простая в использовании. Я обнаружил, что некоторые другие библиотеки Javascript для AES трудны для понимания и использования. Например, в некоторых из них я не мог найти место для установки IV или режима (CBC, ECB и т. Д.). Все было не так, как я ожидал. SlowAES не был таким. Недвижимость оказалась именно там, где я ожидал. Мне было легко разобраться, поскольку я был знаком с моделями криптопрограммирования Java и .NET.
PBKDF2 Анандама был не совсем на том уровне. Он поддерживает только один вызов функции DeriveBytes, поэтому, если вам нужно получить как ключ, так и IV из пароля, эта библиотека не будет работать без изменений. Небольшая модификация, и для этой цели он отлично работает.
РЕДАКТИРОВАТЬ : Я собрал пример упаковки SlowAES и модифицированной версии PBKDF2 Анандама в компоненты сценария Windows. Использование этого AES с ключом, полученным из пароля, показывает хорошее взаимодействие с классом .NET RijndaelManaged.
EDIT2 : демонстрационная страница показывает, как использовать это шифрование AES с веб-страницы. Использование тех же входных параметров (iv, key, mode и т. Д.), Поддерживаемых в .NET, дает вам хорошее взаимодействие с классом .NET Rijndael. Вы можете сделать "просмотр исходного кода", чтобы получить javascript для этой страницы.
EDIT3
- позднее добавление: криптография Javascript считается вредной. Стоит прочитать.
источник
В своих поисках шифрования AES я нашел это у некоторых студентов Стэндфорда. Утверждает, что он самый быстрый. Поддерживает CCM, OCB, GCM и блочное шифрование. http://crypto.stanford.edu/sjcl/
источник
Погуглив "JavaScript AES" нашел несколько примеров. Первое, что появилось, призвано объяснить алгоритм, а также предложить решение:
Скрипты подвижного типа: AES
источник
Этот пост уже старый, но crypto-js , возможно, теперь самая полная библиотека шифрования javascript.
CryptoJS - это набор криптографических алгоритмов, реализованных на JavaScript. Он включает следующие шифры: AES-128, AES-192, AES-256, DES, Triple DES, Rabbit, RC4, RC4Drop и хешеры: MD5, RIPEMD-160, SHA-1, SHA-256, SHA-512, SHA. -3 с 224, 256, 384 или 512 битами.
Вы можете посмотреть их краткое руководство, которое также является справочником для следующего порта node.js.
node-cryptojs-aes - это порт node.js для crypto-js
источник
Недавно мне потребовалось выполнить некоторую совместимость шифрования / дешифрования между javascript и python.
В частности ...
1) Использование AES для шифрования в javascript и дешифрования в python (Google App Engine) 2) Использование RSA для шифрования в javascript и дешифрования в python (Google App Engine) 3) Использование pycrypto
Я нашел много-много разных версий RSA и AES, плавающих в Интернете, и все они различались по своему подходу, но я не нашел хорошего примера сквозной совместимости javascript и python.
В конце концов, после многих проб и ошибок мне удалось сколотить что-то, что соответствовало моим потребностям.
Как бы то ни было, я создал пример js / webapp, разговаривающего с сервером python, размещенным на движке приложений Google, который использует AES, а также открытый и закрытый ключ RSA.
Я бы добавил его сюда по ссылке на случай, если он будет полезен другим, которым нужно сделать то же самое.
http://www.ipowow.com/files/aesrsademo.tar.gz
и посмотрите демонстрацию на rsa-aes-demo DOT appspot DOT com
изменить: просмотрите вывод консоли браузера, а также просмотрите исходный код, чтобы получить некоторые подсказки и полезные сообщения о том, что происходит в демонстрации
изменить: обновлена очень старая и несуществующая ссылка на источник, чтобы теперь указывать на
https://sestertii.com/files/aesrsademo.tar.gz
источник
Судя по моему собственному опыту, asmcrypto.js обеспечивает самую быструю реализацию AES в JavaScript (особенно в Firefox, поскольку там он может полностью использовать asm.js).
Из ридми:
Edit: Web Cryptography API теперь реализована в большинстве браузеров и должны быть использованы в качестве основного решения , если вы заботитесь о производительности. Имейте в виду, что IE11 реализовал более раннюю черновую версию стандарта, в которой не использовались обещания.
Некоторые примеры можно найти здесь:
источник
Используйте CryptoJS
Вот код: https://github.com/odedhb/AES-encrypt
А вот рабочий пример онлайн: https://odedhb.github.io/AES-encrypt/
источник
Попробуйте asmcrypto.js - это очень быстро.
PS: Я автор и могу ответить на ваши вопросы, если они есть. Также был бы рад получить обратную связь :)
источник
http://www.movable-type.co.uk/scripts/aes.html библиотека может помочь.
источник
http://www.movable-type.co.uk/scripts/aes.html
источник
Если вы пытаетесь использовать javascript, чтобы избежать использования SSL, подумайте еще раз. Есть много промежуточных мер, но только SSL обеспечивает безопасную связь. Библиотеки шифрования Javascript могут помочь против определенного набора атак, но не от настоящей атаки типа «человек посередине».
Если вы ищете SSL для движка приложений Google в личном домене, взгляните на wwwizer.com .
В следующем сообщении объясняется, как создать попытку безопасного соединения с javascript и как сделать это неправильно: используйте модуль шифрования JavaScript вместо SSL / HTTPS.
источник
Существует также бесплатная библиотека Stanford в качестве альтернативы Cryptojs.
http://crypto.stanford.edu/sjcl/
источник
Другое решение с поддержкой AES-256: https://github.com/digitalbazaar/forge
источник
Вот единственное решение, которое сработало для меня:
http://www.hanewin.net/encrypt/aes/aes.htm
Это довольно простой, но простой в использовании и, кажется, хорошо работает.
источник