
Security News
Attackers Are Hunting High-Impact Node.js Maintainers in a Coordinated Social Engineering Campaign
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.
binary-pack-js
Advanced tools
JavaScript library for binary data serialization with multiple encryption methods
Русский | English
JavaScript библиотека для бинарной сериализации данных с поддержкой шифрования. Поддерживает упаковку любых JSON-совместимых данных в бинарный формат с возможностью использования различных алгоритмов шифрования.
npm install binary-pack-js
<script src="https://cdn.jsdelivr.net/npm/binary-pack-js@latest/dist/binary-pack.umd.min.js"></script>
import {BinaryPack, AvailableMethodsName} from 'binary-pack-js';
const packer = new BinaryPack('my-secret', AvailableMethodsName.XOR);
const data = {
server: 'Node.js',
users: ['user1', 'user2'],
config: {port: 3000, https: true}
};
console.log('Original data:', data);
// Pack and unpack
const binary = packer.pack(data);
console.log('Binary length:', binary.byteLength, 'bytes');
const unpacked = packer.unpack(binary);
console.log('Unpacked data:', unpacked);
// Base64 example
const base64 = BinaryPack.bufferToBase64(binary);
console.log('Base64 length:', base64.length, 'chars');
const fromBase64 = BinaryPack.base64ToBuffer(base64);
const fromBase64Unpacked = packer.unpack(fromBase64);
console.log('From Base64:', fromBase64Unpacked);
const {BinaryPack, AvailableMethodsName} = require('binary-pack-js');
const packer = new BinaryPack('my-secret', AvailableMethodsName.XOR);
const data = {
server: 'Node.js',
users: ['user1', 'user2'],
config: {port: 3000, https: true}
};
console.log('Original data:', data);
// Pack and unpack
const binary = packer.pack(data);
console.log('Binary length:', binary.byteLength, 'bytes');
const unpacked = packer.unpack(binary);
console.log('Unpacked data:', unpacked);
// Base64 example
const base64 = BinaryPack.bufferToBase64(binary);
console.log('Base64 length:', base64.length, 'chars');
const fromBase64 = BinaryPack.base64ToBuffer(base64);
const fromBase64Unpacked = packer.unpack(fromBase64);
console.log('From Base64:', fromBase64Unpacked);
<script src="https://cdn.jsdelivr.net/npm/binary-pack-js@latest/dist/binary-pack.umd.min.js"></script>
<script>
// Example usage
const {BinaryPack, AvailableMethodsName} = window.BinaryPackPackage
const packer = new BinaryPack('my-secret', AvailableMethodsName.XOR);
const data = { message: 'Hello Browser!', timestamp: Date.now() };
// Pack data
const binary = packer.pack(data);
console.log('Packed data:', binary);
// Convert to Base64 for display
const base64 = BinaryPack.bufferToBase64(binary);
document.write('<p>Base64: ' + base64 + '</p>');
// Unpack data
const unpacked = packer.unpack(binary);
document.write('<p>Unpacked: ' + JSON.stringify(unpacked) + '</p>');
</script>
Библиотека поддерживает три метода шифрования:
const packer = new BinaryPack('secret', 'xor');const packer = new BinaryPack('secret', 'caesar');const packer = new BinaryPack('secret', 'aes-like');Метод AES-like не является реализацией стандартного AES алгоритма, а представляет собой упрощенную версию с тремя раундами преобразований для образовательных целей.
Все методы обеспечивают базовую защиту. Для критически важных данных рекомендуется использовать специализированные криптографические библиотеки.
Библиотека предоставляет детализированные ошибки:
try {
const packer = new BinaryPack('secret', 'aes-like');
const data = packer.unpack(invalidBuffer);
} catch (error) {
console.error('Error:', error.message);
// Возможные ошибки:
// - "Неподдерживаемый метод шифрования"
// - "Неверная версия формата данных"
// - "Несоответствие методов шифрования"
// - "Некорректная длина данных"
// - "Ошибка распаковки данных"
}
new BinaryPack(secret, encryptionMethod)Создает экземпляр BinaryPack.
secret - секретный ключ (строка, опционально)encryptionMethod - метод шифрования: 'xor', 'caesar', 'aes-like' или nullpack(data)Упаковывает данные в бинарный формат.
data - любые JSON-совместимые данныеArrayBufferunpack(buffer)Распаковывает данные из бинарного формата.
buffer - бинарные данные (ArrayBuffer)BinaryPack.bufferToBase64(buffer)Статический метод для конвертации ArrayBuffer в Base64 строку.
BinaryPack.base64ToBuffer(base64)Статический метод для конвертации Base64 строки обратно в ArrayBuffer.
// Клиентская сторона
const packer = new BinaryPack('session-key', AvailableMethodsName.XOR);
const data = { action: 'update', payload: { ... } };
const binary = packer.pack(data);
// Отправка через fetch
fetch('/api/data', {
method: 'POST',
body: BinaryPack.bufferToBase64(binary)
});
// Серверная сторона (Node.js с Express)
app.post('/api/data', express.raw({ type: '*/*' }), (req, res) => {
const buffer = BinaryPack.base64ToBuffer(req.body.toString());
const data = packer.unpack(buffer);
// Обработка данных...
});
// Сохранение в localStorage
const packer = new BinaryPack('local-storage-key', AvailableMethodsName.CAESAR);
const userData = { preferences: { ... }, history: [...] };
const binary = packer.pack(userData);
localStorage.setItem('userData', BinaryPack.bufferToBase64(binary));
// Загрузка из localStorage
const storedBase64 = localStorage.getItem('userData');
if (storedBase64) {
const buffer = BinaryPack.base64ToBuffer(storedBase64);
const userData = packer.unpack(buffer);
}
Для использования в Node.js требуется версия 8.0.0 или выше. Библиотека автоматически включает необходимые полифиллы для работы с бинарными данными.
Библиотека оптимизирована для работы с большими объемами данных. Все методы шифрования реализованы с минимальными накладными расходами.
Бенчмарки на различных объемах данных (операций в секунду):
| Метод | 1 KB | 10 KB | 100 KB | 1 MB |
|---|---|---|---|---|
| Без шифрования | 54568 | 7999 | 1162 | 120 |
| XOR | 13634 | 1951 | 215 | 21 |
| Caesar | 15294 | 3613 | 400 | 39 |
| AES-like | 12456 | 5599 | 540 | 53 |
MIT License - подробности в файле LICENSE.
npm run test
npm run benchmark
Для критически важных данных рекомендуется:
BinaryPack - универсальное решение для бинарной сериализации данных с гибкими настройками безопасности и отличной производительностью.
FAQs
JavaScript library for binary data serialization with multiple encryption methods
We found that binary-pack-js demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

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.

Security News
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.