kuznyechik_multi
Version:
Шифрование ГОСТ 34.12-2018 Кузнечик. Encryption GOST 34.12-2018 Kuznyechik || Grasshopper. Support || Поддержка ESM/CommonJS/ChildProcess/browser
44 lines (43 loc) • 2.64 kB
JavaScript
import { randomBytes } from "node:crypto";
import { decryptChilds, encryptChilds } from "../functions.mjs";
import { cpus } from "node:os";
import { EQ } from "./checkerFunctions.mjs";
const speed = (length, time) => {
let speed = length / time;
if (speed / 1024 < 1)
return (speed).toFixed(2) + " " + 'Байт/с';
if ((speed / (1024 * 1024)) < 1)
return (speed / (1024)).toFixed(2) + " " + 'КБайта/с';
if ((speed / (1024 * 1024 * 1024)) < 1)
return (speed / (1024 * 1024)).toFixed(2) + " " + 'МБайта/с';
return (speed / (1024 * 1024 * 1024)).toFixed(2) + " " + 'ГБайта/с';
};
/**
* Функция проверки скорости шифрования размер псевдослучайных данных указывать в МБайтах
* @param size размер псевдослучайных данных в МБайтах (до 2 ГБайт = 2048) указав 0 будет колличество ядер*2 в МБайтах
*/
export default async (size = 0) => {
let cp = cpus();
let childs = cpus().length;
let rb = size;
if (size === 0) {
rb = childs * 1024 * 1024 * 2;
}
else
rb *= 1024 * 1024;
let data = randomBytes(rb);
let key = randomBytes(32).toString("hex");
let start = +new Date();
console.log("Многопоточное шифрование/дешифрование (nodejs only), размер данных " + (data.length / (1024 * 1024)).toFixed(3) + " Мбайта ");
console.log("Процессор : " + cp[0].model);
console.log("Колличесво дочерник процессов : " + childs);
let eBuff = await encryptChilds(Buffer.from(data), key, childs);
console.log("Заняло времени шифрование : " + (((+new Date()) - start) / 1000) + "c");
console.log("Скорость шифрования : " + speed(data.length, (((+new Date()) - start) / 1000)));
start = +new Date();
let dBuff = await decryptChilds(Buffer.from(eBuff), key, childs);
console.log("Заняло времени дешифрование : " + (((+new Date()) - start) / 1000) + "c");
console.log("Скорость дешифрование : " + speed(data.length, (((+new Date()) - start) / 1000)) + "\n\n");
console.log("Проверка на равенство исходных данных и шифрованных : ", EQ(data, eBuff));
console.log("Проверка на равенство исходных данных и дешифрованных : ", EQ(data, dBuff));
};