0.0.2 • Published 5 months ago

@hicaru/kuznechik.js v0.0.2

Weekly downloads
-
License
MIT
Repository
github
Last release
5 months ago

Кузнечик

Библиотека для шифрования и дешифрования данных по алгоритму «Кузнечик» (ГОСТ Р 34.12-2015). Реализует режимы шифрования ECB, CBC, CFB, CTR, OFB и MAC. Написана на TypeScript, обеспечивает высокую производительность и типобезопасность.

Возможности

  • Поддержка всех стандартных режимов шифрования: ECB, CBC, CFB, CTR, OFB.
  • Вычисление имитовставки (MAC).
  • Работа с 256-битными ключами и 128-битными блоками.
  • Модульная структура с поддержкой ESM и CJS.
  • Полная типизация для TypeScript.

Установка

npm install @hicaru/kuznechik.js

Использование

Пример шифрования и дешифрования в режиме ECB:

import { KeyStore, AlgEcb } from '@hicaru/kuznechik.js';

const masterKey = new Uint8Array([
  0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff,
  0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
  0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10,
  0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,
]);

const data = new Uint8Array([
  0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x00,
  0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88,
]);

const keyStore = new KeyStore();
keyStore.setMasterKey(masterKey);

const alg = new AlgEcb(keyStore);
const encrypted = alg.encrypt(data);
const decrypted = alg.decrypt(encrypted);

console.log('Зашифрованные данные:', encrypted);
console.log('Расшифрованные данные:', decrypted);

Сборка проекта

  1. Установите зависимости:
    npm install
  2. Соберите библиотеку:
    npm run build
  3. Выходные файлы будут в папке dist.

Тестирование

Для запуска тестов используйте:

npm test

Структура проекта

  • src/ — исходный код библиотеки.
  • __tests__/ — тесты с использованием Vitest.
  • dist/ — собранные файлы (CJS, ESM, типы).
  • index.ts — точка входа.

Лицензия

MIT

0.0.2

5 months ago

0.0.1

5 months ago