Библиотека jsrsasign распространяется через npm и может быть установлена стандартным способом, используемым в экосистеме Node.js.
npm install jsrsasign
После установки пакет попадает в node_modules и
становится доступным для импорта как в CommonJS, так и в современных
ESM-проектах.
В классическом окружении Node.js библиотека подключается через
require. Это наиболее совместимый и часто используемый
способ в существующих проектах.
const jsrsasign = require("jsrsasign");
После подключения становятся доступны основные пространства имён библиотеки:
jsrsasign.KJURjsrsasign.KEYUTILjsrsasign.KJUR.cryptojsrsasign.KJUR.jwsПример генерации RSA ключа:
const { KEYUTIL } = require("jsrsasign");
const keypair = KEYUTIL.generateKeypair("RSA", 2048);
console.log(keypair.prvKeyObj);
console.log(keypair.pubKeyObj);
В современных проектах, использующих "type": "module"
или сборщики, поддерживающие ESM, библиотека подключается через
import.
import jsrsasign from "jsrsasign";
Или точечно:
import { KEYUTIL, KJUR } from "jsrsasign";
Однако важно учитывать, что структура экспорта может зависеть от сборщика. В некоторых конфигурациях надёжнее использовать default import:
import jsrsasign from "jsrsasign";
const { KEYUTIL } = jsrsasign;
При использовании Webpack, Vite или Rollup библиотека автоматически включается в бандл после установки через npm.
Пример использования в модуле фронтенда:
import jsrsasign from "jsrsasign";
const header = { alg: "HS256", typ: "JWT" };
const payload = { sub: "1234567890", name: "Alice" };
const sHeader = JSON.stringify(header);
const sPayload = JSON.stringify(payload);
const secret = "my-secret";
const jwt = jsrsasign.KJUR.jws.JWS.sign(
"HS256",
sHeader,
sPayload,
secret
);
console.log(jwt);
После установки npm-пакета основная логика находится внутри:
node_modules/jsrsasign/
Ключевые части:
lib/ — основная библиотекаjsrsasign.js — сборка для общего использованияjsrsasign-all-min.js — минифицированная версияpackage.json — описание модулей и экспортовПосле подключения через npm доступны основные модули криптографии.
const { KEYUTIL } = require("jsrsasign");
const kp = KEYUTIL.generateKeypair("RSA", 2048);
const privateKey = KEYUTIL.getPEM(kp.prvKeyObj, "PKCS1PRV");
const publicKey = KEYUTIL.getPEM(kp.pubKeyObj);
console.log(privateKey);
console.log(publicKey);
const { KJUR } = require("jsrsasign");
const signature = KJUR.crypto.Mac.signString(
"hello world",
"secret",
"sha256"
);
console.log(signature);
Одно из наиболее частых применений — работа с JSON Web Token.
const jsrsasign = require("jsrsasign");
const header = { alg: "HS256", typ: "JWT" };
const payload = { userId: 42, role: "admin" };
const token = jsrsasign.KJUR.jws.JWS.sign(
"HS256",
JSON.stringify(header),
JSON.stringify(payload),
"super-secret-key"
);
console.log(token);
const isValid = jsrsasign.KJUR.jws.JWS.verifyJWT(
token,
"super-secret-key",
{ alg: ["HS256"] }
);
console.log(isValid);
В проектах с "type": "module" может возникать ситуация,
когда require недоступен. В этом случае используется
import.
import jsrsasign from "jsrsasign";
Библиотека частично ориентирована на браузерную среду. В Node.js иногда требуется полифилл глобальных объектов:
global.window = {};
Некоторые окружения требуют доступа через default export:
import jsrsasign from "jsrsasign";
const KJUR = jsrsasign.KJUR;
TypeScript не содержит встроенных типов для jsrsasign, поэтому часто используется импорт с объявлением типов вручную.
declare module "jsrsasign";
import jsrsasign from "jsrsasign";
После этого библиотека используется аналогично Jav * aScript:
const token: string = jsrsasign.KJUR.jws.JWS.sign(
"HS256",
JSON.stringify({ alg: "HS256" }),
JSON.stringify({ data: "value" }),
"key"
);
В устаревших сборках библиотека может подключаться как UMD-модуль:
<script src="node_modules/jsrsasign/lib/jsrsasign-all-min.js"></script>
<script>
const sig = KJUR.crypto.Util.sha256("data");
console.log(sig);
</script>
require("jsrsasign")import jsrsasign from "jsrsasign"import jsrsasign from "jsrsasign"<script> подключение UMD-сборкиconst jsrsasign = require("jsrsasign");
const { KJUR, KEYUTIL } = jsrsasign;
// генерация ключей
const kp = KEYUTIL.generateKeypair("RSA", 2048);
// создание JWT
const header = { alg: "RS256", typ: "JWT" };
const payload = { user: "admin" };
const privateKeyPem = KEYUTIL.getPEM(kp.prvKeyObj, "PKCS8PRV");
const jwt = KJUR.jws.JWS.sign(
"RS256",
JSON.stringify(header),
JSON.stringify(payload),
privateKeyPem
);
console.log(jwt);