Как преобразовать ключ JWK в ключ pem в PHP без использования сторонних библиотек?
Пример JWK
{
"kty": "RSA",
"kid": "FftONTxoEg",
"use": "sig",
"alg": "RS256",
"n": "wio-SFzFvKKQ9vl5ctaYSi09o8k3Uh7r6Ht2eJv-hSaZ6A6xTXVIBVSm0KvPxaJlpjYPTCcl2sdEyXlD2Uh1khUKU7r9ON3rpN8pFHAere5ig_JGVEShxmt5E_jzMymYnSfkoSW44ulevQeUwP_MiC5VC1KJjTfD73ghX0tQ0-_RjTJJ2cLyFC4VFNboBMCVioUrz8IA3c0KIOl507qswQvMsh2vBTMDDSJfippAGLzUiWXxUlid-vyOC8GCtag61taSorxCw14irk-tsh7hWjDDkSTFn2gChPMfXXj10_lCv0UG29TVUVCAsay4pszzgmc4zwhgSsqQRd939BJexw",
"e": "AQAB"
}
Ожидаемый результат
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwio+SFzFvKKQ9vl5ctaY
Si09o8k3Uh7r6Ht2eJv+hSaZ6A6xTXVIBVSm0KvPxaJlpjYPTCcl2sdEyXlD2Uh1
khUKU7r9ON3rpN8pFHAere5ig/JGVEShxmt5E/jzMymYnSfkoSW44ulevQeUwP/M
iC5VC1KJjTfD73ghX0tQ0+/RjTJJ2cLyFC4VFNboBMCVioUrz8IA3c0KIOl507qs
wQvMsh2vBTMDDSJfippAGLzUiWXxUlid+vyOC8GCtag61taSorxCw14irk+tsh7h
WjDDkSTFn2gChPMfXXj10/lCv0UG29TVUVCAsay4pszzgmc4zwhgSsqQRd939BJe
xwIDAQAB
-----END PUBLIC KEY-----
Я пытаюсь конвертировать с помощью этого кода, и ключ почти аналогичен требуемому результату, но все же отличается от подписи, необходимой для проверки. Может ли кто-нибудь помочь мне с этим?
private function jwkToPem($jwk) {
$modulus = $this->base64UrlDecode($jwk['n']);
$exponent = $this->base64UrlDecode($jwk['e']);
if (ord($modulus[0]) > 0x7f) {
$modulus = "\x00" . $modulus;
}
$modulus = "\x02" . $this->asn1Length(strlen($modulus)) . $modulus;
$exponent = "\x02" . $this->asn1Length(strlen($exponent)) . $exponent;
$rsaPublicKey = "\x30" . $this->asn1Length(strlen($modulus . $exponent)) . $modulus . $exponent;
$rsaOID = "\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x01\x05\x00";
$publicKeyBitString = "\x03" . $this->asn1Length(strlen($rsaPublicKey) + 1) . "\x00" . $rsaPublicKey;
$fullKey = "\x30" . $this->asn1Length(strlen($rsaOID . $publicKeyBitString)) . $rsaOID . $publicKeyBitString;
return "-----BEGIN PUBLIC KEY-----\n" . chunk_split(base64_encode($fullKey), 64) . "-----END PUBLIC KEY-----\n";
}
private function asn1Length($length) {
if ($length
Подробнее здесь: https://stackoverflow.com/questions/790 ... native-php
Преобразование ключа JWK в PEM с использованием встроенного PHP ⇐ Php
Кемеровские программисты php общаются здесь
-
Anonymous
1727776554
Anonymous
Как преобразовать ключ JWK в ключ pem в PHP без использования сторонних библиотек?
Пример JWK
{
"kty": "RSA",
"kid": "FftONTxoEg",
"use": "sig",
"alg": "RS256",
"n": "wio-SFzFvKKQ9vl5ctaYSi09o8k3Uh7r6Ht2eJv-hSaZ6A6xTXVIBVSm0KvPxaJlpjYPTCcl2sdEyXlD2Uh1khUKU7r9ON3rpN8pFHAere5ig_JGVEShxmt5E_jzMymYnSfkoSW44ulevQeUwP_MiC5VC1KJjTfD73ghX0tQ0-_RjTJJ2cLyFC4VFNboBMCVioUrz8IA3c0KIOl507qswQvMsh2vBTMDDSJfippAGLzUiWXxUlid-vyOC8GCtag61taSorxCw14irk-tsh7hWjDDkSTFn2gChPMfXXj10_lCv0UG29TVUVCAsay4pszzgmc4zwhgSsqQRd939BJexw",
"e": "AQAB"
}
Ожидаемый результат
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwio+SFzFvKKQ9vl5ctaY
Si09o8k3Uh7r6Ht2eJv+hSaZ6A6xTXVIBVSm0KvPxaJlpjYPTCcl2sdEyXlD2Uh1
khUKU7r9ON3rpN8pFHAere5ig/JGVEShxmt5E/jzMymYnSfkoSW44ulevQeUwP/M
iC5VC1KJjTfD73ghX0tQ0+/RjTJJ2cLyFC4VFNboBMCVioUrz8IA3c0KIOl507qs
wQvMsh2vBTMDDSJfippAGLzUiWXxUlid+vyOC8GCtag61taSorxCw14irk+tsh7h
WjDDkSTFn2gChPMfXXj10/lCv0UG29TVUVCAsay4pszzgmc4zwhgSsqQRd939BJe
xwIDAQAB
-----END PUBLIC KEY-----
Я пытаюсь конвертировать с помощью этого кода, и ключ почти аналогичен требуемому результату, но все же отличается от подписи, необходимой для проверки. Может ли кто-нибудь помочь мне с этим?
private function jwkToPem($jwk) {
$modulus = $this->base64UrlDecode($jwk['n']);
$exponent = $this->base64UrlDecode($jwk['e']);
if (ord($modulus[0]) > 0x7f) {
$modulus = "\x00" . $modulus;
}
$modulus = "\x02" . $this->asn1Length(strlen($modulus)) . $modulus;
$exponent = "\x02" . $this->asn1Length(strlen($exponent)) . $exponent;
$rsaPublicKey = "\x30" . $this->asn1Length(strlen($modulus . $exponent)) . $modulus . $exponent;
$rsaOID = "\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x01\x05\x00";
$publicKeyBitString = "\x03" . $this->asn1Length(strlen($rsaPublicKey) + 1) . "\x00" . $rsaPublicKey;
$fullKey = "\x30" . $this->asn1Length(strlen($rsaOID . $publicKeyBitString)) . $rsaOID . $publicKeyBitString;
return "-----BEGIN PUBLIC KEY-----\n" . chunk_split(base64_encode($fullKey), 64) . "-----END PUBLIC KEY-----\n";
}
private function asn1Length($length) {
if ($length
Подробнее здесь: [url]https://stackoverflow.com/questions/79042610/convert-jwk-to-pem-key-using-native-php[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия