Эта статья является частью серии сообщений в блоге о взаимодействии с виртуальной машиной Zenroom в запутанном мире JavaScript / Typescript. Это вторая статья из этой серии, и к концу статьи вы сможете запустить новую службу шифрования с помощью Эллиптической кривой Диффи – Хеллмана в своем браузере (Plain JS и HTML).
- Часть первая Zencode в node.js
- Часть вторая Zencode в браузере
- Часть третья, Zencode в React
- Часть четвертая Zencode в машинописном тексте
- Часть пятая. Улучшение Zencode с помощью собственных предложений в туалете-mw
- Часть шестая. Простое создание цепочки API с помощью apiroom
🏹 Давайте создадим сервис шифрования / дешифрования
Итак, вы только что экспериментировали, как зашифровать и расшифровать сообщение с паролем / секретом с помощью ECDH (Эллиптическая кривая Диффи – Хеллмана) на эллиптической кривой SECP256K1 (А вы? Нет? Затем, вернуться назад к п. 1 »).
Теперь скажите, что вы любите простые вещи, и вам просто нужны некоторые базовые функции внутри вашей HTML-страницы (без npm, без nodejs, без модных хипстерских новых блестящих вещей) с помощью старого доброго простого JavaScript.
НЕТ ПРОБЛЕМ. Готов поспорить, нам это нравится.
💻 Давай запачкаем руки
Давайте создадим index.html
файл, первое, что нам нужно, это импортировать нашу zencode_exec
функцию
С такими CDN, как jspm, которые позволяют импортировать модули JavaScript, это не проблема. На сайте jspm говорится:
jspm предоставляет модуль CDN, позволяющий напрямую загружать любой пакет из npm в браузер и другие среды JS как полностью оптимизированный собственный модуль JavaScript.
Так что это удобно и аккуратно, давайте продолжим. Помните функцию шифрования? Давайте скопируем и вставим его, и вместо получения password
и message
в качестве параметров функции мы извлечем их из двух HTMLElements и распечатаем результат в третий элемент.
Теперь откройте файл в своем любимом браузере, и вы должны увидеть что-то вроде этого…
Это некрасиво, почти непригодно для использования, но это работает! 🥳
Как я уже сказал, пара советов, на которые следует обратить внимание. Мы будем использовать модуль JavaScript, поэтому type="module"
в теге <script>
важен. Поскольку мы находимся внутри области видимости модуля, чтобы сделать функцию encrypt()
доступной для нашей страницы, мы должны добавить ее к объекту window
, поэтому обратите внимание на строку 12 предыдущего фрагмента.
Давайте добавим пару строк стиля (не так много) и несколько визуальных отзывов об успешном шифровании. Я буду использовать здесь bulma, очень простой CSS-фреймворк.
Это покажет что-то вроде
Да, это намного лучше 💅🏼
Давайте добавим также функцию дешифрования, и мы готовы развернуть нашу статическую и сверхбыструю службу шифрования / дешифрования ECDH через WWW.
Конечный результат выглядит примерно так
Вы можете попробовать это самостоятельно, зашифровать сообщение паролем, затем скопировать / вставить результат в поле Зашифрованное сообщение, и если вы введете тот же пароль, сообщение будет расшифровано, и результат отобразится правильно.
Что делать, если пароль неправильный? Проверка требуется только в ZenroomVM, поэтому я только что добавил catch
к zencode_exec
обещанию (см. Строки 51–55), которые будут отображать журналы в элементе результата, если что-то пойдет не так!
Как обычно, код доступен в этом репо:
А теперь отложите до следующей недели часть 3, в которой мы поиграем с react и некоторыми компонентами здесь и там, чтобы сделать вещи реактивными и анимированными; p