UNPKG

kuznyechik_multi

Version:

Шифрование ГОСТ 34.12-2018 Кузнечик. Encryption GOST 34.12-2018 Kuznyechik || Grasshopper. Support || Поддержка ESM/CommonJS/ChildProcess/browser

72 lines (71 loc) 4.34 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.EQ = exports.BUFF_TO_TEXT = void 0; const node_crypto_1 = require("node:crypto"); const functions_cjs_1 = require("../functions.cjs"); const RANDOM_BLOCK = () => Buffer.from(Array.from({ length: 16 }).map((x, i) => (0, node_crypto_1.randomInt)(0, 255))); const NUM_TO_HEX = (a) => a < 16 ? "0" + a.toString(16) : a.toString(16); const BUFF_TO_TEXT = (a) => "[ " + Array.from(a).map(NUM_TO_HEX).join(' ') + " ]"; exports.BUFF_TO_TEXT = BUFF_TO_TEXT; const EQ = (a, b) => { for (let i = 0; i < a.length; i++) if (a[i] !== b[i]) return false; return true; }; exports.EQ = EQ; /** Функция проверки работоспособности R преобразования и ему обратного */ function CHECKER_R() { let data = RANDOM_BLOCK(); console.log("\tФункция проверки работоспособности R преобразования и ему обратного"); console.log('\t ' + "Изначальные данные " + (0, exports.BUFF_TO_TEXT)(data)); let R = (0, functions_cjs_1.R_TRANFORM)(data); console.log('\t ' + "R_TRANFORM данные " + (0, exports.BUFF_TO_TEXT)(R)); let RR = (0, functions_cjs_1.REV_R_TRANSFORM)(R); console.log('\t ' + "REV_R_TRANSFORM данные " + (0, exports.BUFF_TO_TEXT)(RR)); console.log(((0, exports.EQ)(data, RR) ? "Сошлось" : "Не сошлось") + "\n"); } /** Функция проверки работоспособности L преобразования и ему обратного */ function CHECKER_L() { let data = RANDOM_BLOCK(); console.log("\tФункция проверки работоспособности L преобразования и ему обратного"); console.log('\t ' + "Изначальные данные " + (0, exports.BUFF_TO_TEXT)(data)); let R = (0, functions_cjs_1.L_TRANSFORM)(data); console.log('\t ' + "L_TRANSFORM данные " + (0, exports.BUFF_TO_TEXT)(R)); let RR = (0, functions_cjs_1.REV_L_TRANSFORM)(R); console.log('\t ' + "REV_L_TRANSFORM данные " + (0, exports.BUFF_TO_TEXT)(RR)); console.log(((0, exports.EQ)(data, RR) ? "Сошлось" : "Не сошлось") + "\n"); } /** Функция проверки работоспособности S преобразования и ему обратного */ function CHECKER_S() { let data = RANDOM_BLOCK(); console.log("\tФункция проверки работоспособности S преобразования и ему обратного"); console.log('\t ' + "Изначальные данные " + (0, exports.BUFF_TO_TEXT)(data)); let R = (0, functions_cjs_1.S_TRANSFORM)(data); console.log('\t ' + "S_TRANSFORM данные " + (0, exports.BUFF_TO_TEXT)(R)); let RR = (0, functions_cjs_1.REV_S_TRANSFORM)(R); console.log('\t ' + "REV_S_TRANSFORM данные " + (0, exports.BUFF_TO_TEXT)(RR)); console.log(((0, exports.EQ)(data, RR) ? "Сошлось" : "Не сошлось") + "\n"); } /** Функция проверки работоспособности создания хеша */ function CHECKER_10HASH() { let data = RANDOM_BLOCK(); let key = Buffer.concat([RANDOM_BLOCK(), RANDOM_BLOCK()]); let keys = (0, functions_cjs_1.EXPAND_KEYS)(key); keys.map(exports.BUFF_TO_TEXT).map((x) => console.log(x)); console.log("\tФункция проверки работоспособности создания хеша"); console.log('\t ' + "Ключ " + (0, exports.BUFF_TO_TEXT)(key) + "\n"); console.log('\t ' + "Изначальные данные " + (0, exports.BUFF_TO_TEXT)(data)); let R = (0, functions_cjs_1.ROUNDS_10)(data, keys); console.log('\t ' + "ROUNDS_10 данные " + (0, exports.BUFF_TO_TEXT)(R)); let RR = (0, functions_cjs_1.REV_ROUNDS_10)(R, keys); console.log('\t ' + "REV_ROUNDS_10 данные " + (0, exports.BUFF_TO_TEXT)(RR)); // keys.keys.map(BUFF_TO_TEXT).map((x)=>console.log(x)) console.log(((0, exports.EQ)(data, RR) ? "Сошлось" : "Не сошлось") + "\n"); } exports.default = () => { CHECKER_R(); CHECKER_L(); CHECKER_S(); CHECKER_10HASH; };