Javascript AES шифрование [закрыто]



есть ли библиотека для 256-битного шифрования AES в Javascript?

15   97  

15 ответов:

JSAES-это мощная реализация AES в JavaScript. http://point-at-infinity.org/jsaes/

здесь демонстрационная страница который использует slowAES.

slowAES был прост в использовании. Логически оформленный. Разумная упаковка ОО. Поддерживает ручки и рычаги, такие как IV и режим шифрования. Хорошая совместимость с .NET / C#. имя-язык в щеку; это называется"медленно AES", потому что он не реализован в C++. Но в моих тестах он не был нереально медленным.

ему не хватает режима ЕЦБ. Также не хватает режима CTR, хотя вы может построить один довольно легко, учитывая режим ЕЦБ, я думаю.

Он ориентирован исключительно на шифрование. Хороший дополнительный класс, который делает RFC2898-совместимый вывод ключа на основе пароля, в Javascript, является доступно от Anandam. Эта пара библиотек хорошо работает с аналогичными классами .NET. Хорошее взаимодействие. Хотя, в отличие от SlowAES, Javascript PBKDF2 заметно медленнее, чем Rfc2898DeriveBytes класса при создании ключи.

неудивительно, что технически есть хорошее взаимодействие, но ключевым моментом для меня была модель, принятая SlowAES, знакомая и простая в использовании. Я обнаружил, что некоторые из других библиотек Javascript для AES трудно понять и использовать. Например, в некоторых из них я не мог найти место для установки IV или режима (CBC, ECB и т. д.). Все было не так, как я ожидал. Слоуэз был не таким. Свойства были именно там, где я ожидал их увидеть. Это было легко для меня подобрать,будучи знакомым с моделями программирования Java и .NET crypto.

Анандам был не совсем на этом уровне. Он поддерживал только один вызов функции DeriveBytes, поэтому, если вам нужно получить ключ и IV из пароля, эта библиотека не будет работать без изменений. Некоторые незначительные изменения, и он работает просто отлично для этой цели.

EDIT: я собрал пример упаковки 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/

Googling "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 битами.

вы можете посмотреть на их Быстрый старт который также является ссылкой для следующего узла.порт с JS.

node-cryptojs-aes - это узел.порт 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 app engine, который использует AES и открытый ключ и закрытый ключ RSA.

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

http://www.ipowow.com/files/aesrsademo.tar.gz

и видим демо в rsa-AES-demo DOT appspot DOT com

edit: посмотрите на вывод консоли браузера, а также просмотрите источник, чтобы получить некоторые подсказки и полезные сообщения о том, что происходит в демо

edit: обновлена очень старая и несуществующая ссылка на источник, чтобы теперь указать к

https://sestertii.com/files/aesrsademo.tar.gz

судя по моему собственному опыту, asmcrypto.js обеспечивает самую быструю реализацию AES в JavaScript (особенно в Firefox, так как он может полностью использовать asm.js там).

из readme:

Chrome/31.0
SHA256: 51 MiB/s (9 times faster than SJCL and CryptoJS)
AES-CBC: 47 MiB/s (13 times faster than CryptoJS and 20 times faster than SJCL)

Firefox/26.0
SHA256: 144 MiB/s (5 times faster than CryptoJS and 20 times faster than SJCL)
AES-CBC: 81 MiB/s (3 times faster than CryptoJS and 8 times faster than SJCL)

Edit: The web Cryptography API Теперь реализовано в большинстве браузеров и должен использоваться в качестве основного решения, если вы заботитесь о производительности. Имейте в виду, что IE11 реализовал ранее черновой вариант стандарта, в котором не использовались обещания.

некоторые примеры можно найти здесь:

попробовать asmcrypto.js - это очень быстро.

ПС: я автор и я могу ответить на ваши вопросы, если таковые имеются. Также я был бы рад получить некоторые отзывы :)

Использовать CryptoJS

вот код: https://github.com/odedhb/AES-encrypt

и вот онлайн рабочий пример: https://odedhb.github.io/AES-encrypt/

http://www.movable-type.co.uk/scripts/aes.html библиотека может быть некоторым подспорьем.

Если вы пытаетесь использовать javascript, чтобы избежать использования SSL, подумайте еще раз. Есть много промежуточных мер, но только SSL обеспечивает безопасную передачу. Библиотеки шифрования Javascript могут помочь в борьбе с определенным набором атак, но не с настоящей атакой "человек в середине".

Если вы ищете SSL для Google App engine на пользовательском домене, взгляните на wwwizer.com.

в следующем сообщении объясняется, как создать попытку secure связь с javascript и как это сделать неправильно: используйте модуль шифрования JavaScript вместо SSL / HTTPS

существует также Stanford free lib в качестве альтернативы Cryptojs

http://crypto.stanford.edu/sjcl/

другое решение с поддержкой AES-256:https://github.com/digitalbazaar/forge

вот единственное решение, которое сработало для меня:

http://www.hanewin.net/encrypt/aes/aes.htm

Это довольно простой, но простой в использовании и, кажется, работает хорошо.

Comments

    No results found.