Использование пакетного менеджера npm является основным способом подключения библиотеки Crypto-js в современных JavaScript-проектах. Такой подход обеспечивает контроль версий, удобное обновление и интеграцию с системами сборки.
Установка выполняется стандартной командой:
npm install crypto-js
После установки библиотека становится доступной в каталоге
node_modules, а также фиксируется в
package.json в разделе зависимостей:
{
"dependencies": {
"crypto-js": "^4.2.0"
}
}
В зависимости от используемой системы модулей (ES Modules или CommonJS) способы подключения отличаются.
ES Modules (современный стандарт):
import CryptoJS from 'crypto-js';
CommonJS (Node.js):
const CryptoJS = require('crypto-js');
Crypto-js поддерживает модульную архитектуру, что позволяет подключать только необходимые алгоритмы, снижая размер итогового бандла:
import SHA256 from 'crypto-js/sha256';
import AES from 'crypto-js/aes';
Такой подход особенно важен при работе с фронтендом, где оптимизация размера скриптов критична.
Пример вычисления хэша:
import SHA256 from 'crypto-js/sha256';
const hash = SHA256('Hello, world!').toString();
console.log(hash);
Пример шифрования:
import AES from 'crypto-js/aes';
const encrypted = AES.encrypt('Secret message', 'password').toString();
console.log(encrypted);
При использовании сборщиков, таких как Webpack, Vite или Rollup, Crypto-js автоматически включается в сборку. Дополнительной настройки обычно не требуется.
Однако важно учитывать:
Подключение через CDN удобно для быстрого прототипирования, учебных примеров или проектов без сборки.
Добавление библиотеки осуществляется через тег
<script>:
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.2.0/crypto-js.min.js"></script>
После загрузки в глобальной области становится доступен объект
CryptoJS.
Пример вычисления SHA-256:
<script>
const hash = CryptoJS.SHA256('Hello, world!').toString();
console.log(hash);
</script>
Пример AES-шифрования:
<script>
const encrypted = CryptoJS.AES.encrypt('Secret message', 'password').toString();
console.log(encrypted);
</script>
CDN также предоставляет доступ к отдельным модулям, что позволяет уменьшить объем загружаемого кода:
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.2.0/aes.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.2.0/sha256.min.js"></script>
После этого доступны только соответствующие алгоритмы:
CryptoJS.SHA256('data');
CryptoJS.AES.encrypt('data', 'key');
При использовании отдельных файлов важно соблюдать порядок:
Однако в большинстве случаев достаточно подключить один файл
crypto-js.min.js, который содержит все компоненты.
npm:
CDN:
npm:
import CryptoJS from 'crypto-js';
console.log(typeof CryptoJS); // object
CDN:
console.log(typeof CryptoJS); // object
Если результат отличается, это указывает на проблему подключения (ошибка импорта или загрузки скрипта).
1. Неправильный импорт:
import { AES } from 'crypto-js'; // не работает
Правильно:
import AES from 'crypto-js/aes';
2. Отсутствие .toString() при
выводе:
const hash = CryptoJS.SHA256('data');
console.log(hash); // объект, а не строка
Правильно:
console.log(hash.toString());
3. Подключение CDN после использования:
<script>
CryptoJS.SHA256('data'); // ошибка
</script>
<script src="crypto-js.min.js"></script>
Правильно:
<script src="crypto-js.min.js"></script>
<script>
CryptoJS.SHA256('data');
</script>
Такой подход обеспечивает гибкость, масштабируемость и контроль над криптографическими операциями в JavaScript-приложениях.