Мы будем использовать алгоритм RSA для генерации пары ключей (публичный и приватный). Сообщения будут шифроваться с помощью публичного ключа, и только обладатель приватного ключа сможет их расшифровать.
Ниже приведен пример скрипта на Node.js, который реализует шифрование файлов с использованием асимметричного шифрования. Приватный ключ можно сохранить на сервере или разделить на несколько серверов для повышения безопасности.
Этот скрипт демонстрирует, как можно реализовать однонаправленное шифрование с использованием асимметричного шифрования. Приватный ключ можно сохранить на сервере или разделить на несколько серверов для повышения безопасности.
Ниже приведен пример скрипта на Node.js, который реализует шифрование файлов с использованием асимметричного шифрования. Приватный ключ можно сохранить на сервере или разделить на несколько серверов для повышения безопасности.
Шаг 1: Установка необходимых пакетов
Сначала установите необходимые пакеты:
Bash:
npm install node-rsa fs
Шаг 2: Создание скрипта для шифрования и дешифрования
Создайте файл crypto.js и добавьте следующий код:
JavaScript:
const fs = require('fs');
const NodeRSA = require('node-rsa');
// Генерация пары ключей
function generateKeys() {
const key = new NodeRSA({ b: 2048 });
const publicKey = key.exportKey('public');
const privateKey = key.exportKey('private');
fs.writeFileSync('public.key', publicKey);
fs.writeFileSync('private.key', privateKey);
console.log('Ключи сгенерированы и сохранены в файлы public.key и private.key');
}
// Шифрование файла
function encryptFile(inputFile, outputFile) {
const publicKey = fs.readFileSync('public.key', 'utf8');
const key = new NodeRSA(publicKey);
const data = fs.readFileSync(inputFile);
const encrypted = key.encrypt(data, 'base64');
fs.writeFileSync(outputFile, encrypted);
console.log(`Файл ${inputFile} зашифрован и сохранен в ${outputFile}`);
}
// Дешифрование файла
function decryptFile(inputFile, outputFile) {
const privateKey = fs.readFileSync('private.key', 'utf8');
const key = new NodeRSA(privateKey);
const data = fs.readFileSync(inputFile, 'utf8');
const decrypted = key.decrypt(data, 'utf8');
fs.writeFileSync(outputFile, decrypted);
console.log(`Файл ${inputFile} расшифрован и сохранен в ${outputFile}`);
}
// Генерация ключей
generateKeys();
// Шифрование файла
encryptFile('input.txt', 'encrypted.txt');
// Дешифрование файла
decryptFile('encrypted.txt', 'decrypted.txt');
Объяснение
- Генерация ключей: Функция generateKeys генерирует пару ключей (публичный и приватный) и сохраняет их в файлы public.key и private.key.
- Шифрование файла: Функция encryptFile считывает публичный ключ из файла, шифрует содержимое входного файла и сохраняет зашифрованные данные в выходной файл.
- Дешифрование файла: Функция decryptFile считывает приватный ключ из файла, дешифрует содержимое входного файла и сохраняет расшифрованные данные в выходной файл.
Этот скрипт демонстрирует, как можно реализовать однонаправленное шифрование с использованием асимметричного шифрования. Приватный ключ можно сохранить на сервере или разделить на несколько серверов для повышения безопасности.