@hicaru/kuznechik.js
Version:
Библиотека для шифрования по алгоритму Кузнечик (ГОСТ Р 34.12-2015)
71 lines (56 loc) • 2.44 kB
Markdown
# Кузнечик
Библиотека для шифрования и дешифрования данных по алгоритму «Кузнечик» (ГОСТ Р 34.12-2015). Реализует режимы шифрования ECB, CBC, CFB, CTR, OFB и MAC. Написана на TypeScript, обеспечивает высокую производительность и типобезопасность.
## Возможности
- Поддержка всех стандартных режимов шифрования: ECB, CBC, CFB, CTR, OFB.
- Вычисление имитовставки (MAC).
- Работа с 256-битными ключами и 128-битными блоками.
- Модульная структура с поддержкой ESM и CJS.
- Полная типизация для TypeScript.
## Установка
```bash
npm install @hicaru/kuznechik.js
```
## Использование
Пример шифрования и дешифрования в режиме ECB:
```ts
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. Установите зависимости:
```bash
npm install
```
2. Соберите библиотеку:
```bash
npm run build
```
3. Выходные файлы будут в папке `dist`.
## Тестирование
Для запуска тестов используйте:
```bash
npm test
```
## Структура проекта
- `src/` — исходный код библиотеки.
- `__tests__/` — тесты с использованием Vitest.
- `dist/` — собранные файлы (CJS, ESM, типы).
- `index.ts` — точка входа.
## Лицензия
MIT