Библиотека Crypto-JS может использоваться в браузере без сборщиков и
установки npm-зависимостей. Самый простой способ подключения — через CDN
с помощью обычного <script> тега. В этом случае
библиотека загружается напрямую из сети и становится доступной через
глобальный объект CryptoJS.
Минимальное подключение выглядит следующим образом:
<script src="https://cdn.jsdelivr.net/npm/crypto-js@4.2.0/crypto-js.min.js"></script>
После загрузки скрипта в глобальной области видимости появляется объект:
console.log(CryptoJS);
Он содержит все основные модули: хеш-функции, HMAC, AES, encoders и вспомогательные утилиты.
После подключения через CDN вся функциональность доступна через
CryptoJS без дополнительных импортов.
const hash = CryptoJS.SHA256("hello world").toString();
console.log(hash);
Методы хеширования возвращают объект WordArray, который обычно
преобразуется в строку через .toString().
В некоторых случаях нет необходимости загружать всю библиотеку целиком. Crypto-JS позволяет подключать отдельные модули, что уменьшает размер загружаемых данных.
<script src="https://cdn.jsdelivr.net/npm/crypto-js@4.2.0/aes.min.js"></script>
После этого становятся доступны только функции, связанные с AES:
const encrypted = CryptoJS.AES.encrypt("secret text", "password").toString();
const decrypted = CryptoJS.AES.decrypt(encrypted, "password")
.toString(CryptoJS.enc.Utf8);
При использовании разных алгоритмов можно подключать несколько файлов подряд:
<script src="https://cdn.jsdelivr.net/npm/crypto-js@4.2.0/core.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/crypto-js@4.2.0/sha256.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/crypto-js@4.2.0/hmac.min.js"></script>
Такой подход уменьшает общий размер загрузки по сравнению с полной версией.
Crypto-JS доступен через несколько популярных CDN-провайдеров.
<script src="https://cdn.jsdelivr.net/npm/crypto-js@4.2.0/crypto-js.min.js"></script>
<script src="https://unpkg.com/crypto-js@4.2.0/crypto-js.min.js"></script>
Оба варианта загружают одинаковые пакеты, различие заключается только в инфраструктуре доставки.
Использование CDN без фиксации версии может привести к изменению поведения кода при обновлении библиотеки. Поэтому всегда указывается конкретная версия:
<script src="https://cdn.jsdelivr.net/npm/crypto-js@4.2.0/crypto-js.min.js"></script>
Если версия не указана:
<script src="https://cdn.jsdelivr.net/npm/crypto-js/crypto-js.min.js"></script>
будет загружена последняя доступная сборка, что нежелательно в стабильных проектах.
При подключении через <script> порядок имеет
значение. Crypto-JS должен быть загружен до кода, который его
использует:
<script src="https://cdn.jsdelivr.net/npm/crypto-js@4.2.0/crypto-js.min.js"></script>
<script>
const hash = CryptoJS.MD5("data").toString();
console.log(hash);
</script>
Если порядок нарушен, возникнет ошибка
CryptoJS is not defined.
Crypto-JS использует собственный тип данных WordArray.
Для корректного преобразования строк применяются кодировщики:
const encrypted = CryptoJS.AES.encrypt(
CryptoJS.enc.Utf8.parse("текст"),
"key"
);
При декодировании:
const bytes = CryptoJS.AES.decrypt(encrypted, "key");
const originalText = bytes.toString(CryptoJS.enc.Utf8);
При подключении через CDN библиотека работает полностью на клиентской стороне:
Однако криптографические операции выполняются в JavaScript, что может быть медленнее нативных реализаций в серверных средах.
При использовании строгих CSP-политик необходимо разрешить загрузку скриптов с CDN-домена:
Content-Security-Policy: script-src 'self' https://cdn.jsdelivr.net;
Без этого браузер может заблокировать загрузку библиотеки.
Crypto-JS не требует современных возможностей JavaScript и работает в широком диапазоне браузеров. При подключении через CDN отсутствует необходимость транспиляции или полифилов.
Типичный пример минимальной страницы:
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>CryptoJS CDN</title>
</head>
<body>
<script src="https://cdn.jsdelivr.net/npm/crypto-js@4.2.0/crypto-js.min.js"></script>
<script>
const hash = CryptoJS.SHA1("example").toString();
document.body.innerText = hash;
</script>
</body>
</html>