Генерация открытого ключа с использованием модуля и показателя степени в PHPPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Генерация открытого ключа с использованием модуля и показателя степени в PHP

Сообщение Anonymous »

У меня есть этот сценарий почтальона предварительного запроса:


< pre class="snippet-code-js lang-js Prettyprint-override">

Код: Выделить всё

const modulus = session.rsa.M;
const exponent = session.rsa.E;
const rsaKey = pmlib.rs.KEYUTIL.getKey({ n: modulus, e: exponent });
const encodedPassword = pmlib.rs.KJUR.crypto.Cipher.encrypt(session.id + '**' + password, rsaKey, 'RSA');


И теперь я хочу сделать это с помощью PHP. Сначала я отправляю запрос на получение сеанса, содержащего идентификатор, модуль и показатель степени, затем мне нужно зашифровать пароль и сеанс для отправки, чтобы выполнить действие входа в систему и получить файлы cookie. Любая помощь в этом?
ОТРЕДАКТИРОВАНО:
Я попробовал этот код, используя node js, и получил открытый ключ:

Код: Выделить всё

const KEYUTIL = require('jsrsasign').KEYUTIL;
const KJUR = require('jsrsasign');

const modulus = session.rsa.M; // ADA6FB0A9B123950AE71EB0A4A90426156CC7545A3F5617096E7A0C095773B413FCA9DF50C231CA4804991C76BB477D721E363E0C7B61852AAC66134D43E21F3A7433C275C62B05E1CA9C5E750FB13B5DD3E6FBC2415C0EE8D23119CA375CE35307DDF828D40FC15CBA2CA545786B7D236B4A45508775250CC5AC376B29DB129
const exponent = session.rsa.E; // 010001
const rsaKey = KEYUTIL.getKey({ n: modulus, e: exponent });
const pem = KJUR.KEYUTIL.getPEM(rsaKey);
console.log(pem);


И когда я пробую этот код, используя php с точным модулем и показателем степени, я получите другой открытый ключ:

Код: Выделить всё

use phpseclib3\Crypt\PublicKeyLoader;
use phpseclib3\Math\BigInteger;

$modulus = $session['rsa']['M'];
$exponent = $session['rsa']['E'];

$rsa_key = PublicKeyLoader::load([
'e' => new BigInteger(base64_decode($exponent), 256),
'n' => new BigInteger(base64_decode($modulus), 256),
]);

echo '';
echo ($rsa_key);
echo '';

openssl_public_encrypt(data, $encoded, $rsa_key);
$encoded = bin2hex($encoded);
Я хочу, чтобы он был таким же, потому что мой код отлично работает в js.
Пример ключа от JS:

Код: Выделить всё

-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCtpvsKmxI5UK5x6wpKkEJhVsx1
RaP1YXCW56DAlXc7QT/KnfUMIxykgEmRx2u0d9ch42Pgx7YYUqrGYTTUPiHzp0M8
J1xisF4cqcXnUPsTtd0+b7wkFcDujSMRnKN1zjUwfd+CjUD8FcuiylRXhrfSNrSk
VQh3UlDMWsN2sp2xKQIDAQAB
-----END PUBLIC KEY-----


Пример ключа PHP:

Код: Выделить всё

-----BEGIN PUBLIC KEY-----
MIHgMA0GCSqGSIb3DQEBAQUAA4HOADCBygKBwA/RBAPQ/AfeOQOQtuQthAutwONR
QtdONd9tvBfNfeNPBOxdRRduOAdAwee9+9QOtdBNtu/dvPAfQ+txfew9xNRevfRA
de/e+A+d+d/eu+9OudRfRfAgvPOfPeOAtfQuAd+w9uhfeBNxfddQ9QdwOwOe9g+A
QNdNwudt+/dRdhNPQhNQ9BQPdAhNfQewQuwew/egNNgAg++e+NQABPee+wNRe9Ou
eguxffRfBOAweQdwhA9edfQQ+BNBetwuROghNQIFANNdNNM=
-----END PUBLIC KEY-----



Подробнее здесь: https://stackoverflow.com/questions/775 ... ent-in-php
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»