New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details
Socket
Book a DemoSign in
Socket

node-happ-decryptor

Package Overview
Dependencies
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

node-happ-decryptor

Happ link encryption and decryption module

latest
Source
npmnpm
Version
1.0.2
Version published
Maintainers
1
Created
Source

Node Happ Decryptor

Node.js (ESM) модуль для шифрования и дешифрования ссылок Happ с использованием RSA-шифрования (PKCS1v15).

Возможности

  • RSA Encryption/Decryption: Использует стандарт RSA_PKCS1_PADDING.
  • Link Parsing: Поддерживает парсинг форматов happ://crypt/..., happ://crypt2/..., happ://crypt3/..., happ://crypt4/....
  • Smart Decryption: Реализует логику автоматического перебора версий. Если дешифровка указанной версией не удалась, модуль пытается использовать доступные ключи в порядке: указанная версия → cryptcrypt2crypt3crypt4.
  • Flexible Key Loading: Поддерживает загрузку ключей как через прямой ввод PEM-строк, так и через указание путей к файлам.
  • ESM: Реализован как стандартный ECMAScript модуль.

Установка

npm i node-happ-decryptor

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

Дешифрование

При инициализации необходимо передать объект с приватными ключами. Версия ключа определяется ключом свойства в объекте.

import HappProcessor from 'node-happ-decryptor';

// Конфигурация: ключи могут быть переданы как пути к файлам или как содержимое PEM
const privateKeys = {
    crypt3: './keys/private_crypt3.pem',       // Путь к файлу
    crypt: '-----BEGIN RSA PRIVATE KEY-----...' // Строка PEM
};

const processor = new HappProcessor(privateKeys);
const link = 'happ://crypt3/OSNoL4qDcgEdum...';

try {
    const result = processor.decrypt(link);
    
    console.log('Decrypted Data:', result.decryptedData);
    console.log('Key Version Used:', result.usedKey);
    console.log('Link Version:', result.version);
} catch (err) {
    console.error('Decryption failed:', err.message);
}

Шифрование

Для шифрования требуется объект с публичными ключами.

import HappProcessor from 'node-happ-decryptor';

const publicKeys = {
    crypt3: './keys/public_crypt3.pem'
};

// Первый аргумент (privateKeys) можно оставить пустым, если требуется только шифрование
const processor = new HappProcessor({}, publicKeys);

try {
    const result = processor.encrypt('my secret data', 'crypt3');
    
    console.log('Generated Link:', result.link);
} catch (err) {
    console.error(err.message);
}

Логика дешифрования

Модуль использует механизм отката (fallback) при выборе ключа. Если ссылка содержит указание на версию happ://crypt/..., но соответствующий ключ отсутствует или не подходит, дешифратор выполнит попытки в следующей последовательности:

  • Версия, указанная в ссылке.
  • crypt
  • crypt2
  • crypt3

Результат возвращается при первом успешном совпадении.

API

new HappProcessor(privateKeys, publicKeys)

Конструктор класса.

  • privateKeys: Объект { [version]: pathOrString }. Используется для дешифрования.
  • publicKeys: Объект { [version]: pathOrString }. Используется для шифрования.

Дешифрует входящую строку.

  • link: Строка формата happ://....
  • Возвращает: Объект { version, usedKey, decryptedData }.
  • Исключения: Выбрасывает Error, если формат неверен или подходящий ключ не найден.

.encrypt(data, version)

Шифрует данные указанным ключом.

  • data: Строка данных.
  • version: Версия ключа (должна присутствовать в publicKeys).
  • Возвращает: Объект { version, encryptedData, link }.

Автор

t.me/OpexDev

FAQs

Package last updated on 12 Dec 2025

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts