Строковые идентификаторы алгоритмов в Jsrsasign представляют собой центральный механизм, через который библиотека унифицирует работу с криптографическими функциями, цифровыми подписями и форматами стандартов PKI и JOSE. Внутри библиотеки один и тот же алгоритм может быть представлен сразу в нескольких формах — как имя в стиле OpenSSL, как JWS-идентификатор, как OID или как внутренний псевдоним.
Строковые идентификаторы используются для того, чтобы абстрагировать криптографические операции от конкретной реализации алгоритма. Вместо прямого вызова низкоуровневых функций разработчик передаёт строку, которая однозначно описывает алгоритм:
Библиотека Jsrsasign внутри выполняет сопоставление строки с конкретной реализацией.
В Jsrsasign можно встретить несколько типов строковых идентификаторов:
SHA256withRSA, SHA1withECDSARS256, ES256,
HS512SHA-1, SHA-256,
SHA-5122.16.840.1.101.3.4.2.1 (SHA-256)SHA256,
RSA-SHA256Каждый тип может использоваться в зависимости от API:
KJUR.crypto.Signature, KJUR.jws.JWS,
KEYUTIL.
Хеш-функции задаются строками, которые часто совпадают с JCA/JCE именами.
Основные идентификаторы:
SHA1SHA256SHA384SHA512MD5В некоторых контекстах допускаются расширенные формы:
SHA-1SHA-256SHA-512Jsrsasign автоматически нормализует строки, сопоставляя их с внутренними реализациями.
Пример использования хеш-алгоритма в контексте подписи:
var sig = new KJUR.crypto.Signature({ "alg": "SHA256withRSA" });
sig.init(privateKey);
sig.updateString("data");
var signature = sig.sign();
Здесь SHA256withRSA включает и хеш, и алгоритм
подписи.
RSA-алгоритмы в Jsrsasign чаще всего представлены в формате:
SHA1withRSASHA256withRSASHA384withRSASHA512withRSAТакже встречаются JWS-эквиваленты:
RS256 → SHA-256 + RSARS384 → SHA-384 + RSARS512 → SHA-512 + RSAСоответствие важно для JWT:
RS256 используется в JSON Web SignatureSHA256withRSA чаще применяется в PKCS#1 стиле APIВнутренне Jsrsasign преобразует RS256 в эквивалентную
криптографическую цепочку.
HMAC идентификаторы используются для симметричной подписи:
HmacSHA1HmacSHA256HmacSHA384HmacSHA512JWS-эквиваленты:
HS256HS384HS512Пример использования:
var sig = new KJUR.crypto.Signature({ "alg": "HmacSHA256" });
sig.init(secretKey);
sig.updateString("message");
var hmac = sig.sign();
В JWS-контексте:
HS256 автоматически мапится на
HmacSHA256ECDSA в Jsrsasign представляется через комбинации хешей и кривых.
Основные строки:
SHA1withECDSASHA256withECDSASHA384withECDSASHA512withECDSAJWS-эквиваленты:
ES256 → P-256 + SHA-256ES384 → P-384 + SHA-384ES512 → P-521 + SHA-512Внутреннее сопоставление учитывает не только хеш, но и кривую эллиптической криптографии:
Jsrsasign активно используется в работе с JWT, поэтому поддерживает стандартизированные идентификаторы:
HS256, HS384, HS512RS256, RS384, RS512ES256, ES384, ES512PS256, PS384, PS512Алгоритмы PSS:
PS256 → RSASSA-PSS + SHA-256PS512 → RSASSA-PSS + SHA-512При использовании:
var sHeader = { alg: "RS256", typ: "JWT" };
var sPayload = { sub: "1234567890", name: "John Doe" };
var sJWT = KJUR.jws.JWS.sign(
"RS256",
sHeader,
sPayload,
privateKey
);
строка RS256 определяет полный криптографический
стек.
В PKI-системах алгоритмы часто определяются через OID (Object Identifier).
Примеры:
1.3.14.3.2.262.16.840.1.101.3.4.2.11.2.840.113549.1.1.1Jsrsasign поддерживает преобразование:
Это используется при парсинге сертификатов X.509:
var cert = new X509();
cert.readCertPEM(pemString);
var algName = cert.getSignatureAlgorithmName();
Результат может быть:
SHA256withRSAJsrsasign использует систему алиасов для унификации:
SHA-256 → SHA256RSA-SHA256 → SHA256withRSAECDSA-SHA256 → SHA256withECDSAНормализация происходит на уровне:
KJUR.crypto.UtilKJUR.jws.JWSЭто позволяет принимать различные входные форматы без изменения логики приложения.
Основной класс подписи принимает строковый идентификатор в параметре
alg:
var sig = new KJUR.crypto.Signature({
alg: "SHA512withRSA"
});
или
var sig = new KJUR.crypto.Signature({
alg: "RS512"
});
Оба варианта приводят к одинаковому результату после внутреннего маппинга.
RSA-PSS использует более строгую схему подписи:
SHA256withRSAandMGF1SHA512withRSAandMGF1JWS обозначения:
PS256PS512Дополнительно может указываться параметр salt length, но в строковом идентификаторе это не отражается напрямую.
Строковые идентификаторы выполняют несколько функций одновременно:
Именно за счёт этой системы Jsrsasign может поддерживать широкий спектр криптографических стандартов при минимальном API-интерфейсе.