Я пытаюсь расшифровать результат по номеру зашифрованной карты Wallester. У меня есть информация, как расшифровать от их поддержки, но в golang, и я попытался перевести ее с помощью phpseclib, но это не удалось.
var resp model.GetEncryptedCardNumberResponse
rsa := crypto.NewRSA([]byte(rsaPrivateKey))
decryptedCardNumber := rsa.DecryptOAEPFromPEM(resp.EncryptedCardNumber, crypto.LabelCardNumber)
log.Println(fmt.Sprintf("Decrypted card number: %s", decryptedCardNumber))
здесь мой php с использованием phpseclib версии 2
$rsa = new RSA();
$rsa->loadKey(file_get_contents(APPPATH .'rsa/private.pem'));
$decryptedCardNumber = $rsa->decrypt($encryptedCardNumber, RSA::ENCRYPTION_OAEP, $label = 'CardNumber');
echo decryptedCardNumber;
пример зашифрованных данных:
-----BEGIN CardNumber MESSAGE-----
ZGus1SGZCnsT7xoZKW1O8RXf3A+8dL6lf6TjsTqr3pgHHZpmFhJX0g8ZSGELPo9M
ILWg/jZag2vX7hwICILOJ3jxm0zwKpL4Gft4cUpnAK42NZakZUwPc7IZSQtRMhHI
jv3H135bJ9YBUOx/cJ1mLDKBcMPGUjwvikw/R3KKWBLViT4Og22K1WJp7w9FqrIy
Ucd65mh/jMGmbwIk9vuh90rxf3RHnykiuaHgE+f/hx3IDN7Glbxi2uivgO6C0sZE
PAdLi3RkIjo18VR9jzCobQ+mFwqcXHFQxO+FLU4CsTf7SyKzaDgnrsJIMyCIax04
QN79qabV91gSoqs1quL9NeRWCmsaWXKPeDMkCumrAxSjhkxcU7iM8S/ubG70Qr7Z
BsCnTCInuSqoQNu2soveU1m8t0+tq6q3JUnHq/AeegYsxsXjPO+1a0CvqpXLsDqi
0Vc2dy5SUmb1N9jpdIXIF17MtY5nY70pu7WaeEAWk/JqGGwED3aolmjO++f2upz1
Xzp0w1Sn5IYYKCxamV9JK+XCUS/XwIAphGCiJZOB0Oo36jgEAlQkJO4LYV8Xmv+D
2ntL8DtRrWg8z8qbA759uv+1CN5EzbLh9t1hGhdncDLpyQWqg1y0loHRXJ19z6Ik
WY/1RjBSxGFPpVHSB7j84JMp6NgbLItoBD2oUXr0IZo=
-----END CardNumber MESSAGE-----
кто-нибудь знает аналогичную функцию golang в PHP?






Наконец я нашел решение
Вот мой скрипт для расшифровки номера карты
сначала я очищаю результат
$encrypted=str_replace("-----BEGIN CardNumber MESSAGE-----","",$encrypted);
$encrypted=str_replace("-----END CardNumber MESSAGE-----", "",$encrypted);
$encrypted=str_replace("\n", "",$encrypted);
Начать декодирование (я использую phpseclib3)
$private = PublicKeyLoader::load(file_get_contents('/path/to/key.pem'));
$plaintext = $private->withLabel("CardNumber")->decrypt(base64_decode($encrypted));
echo $plaintext;
И получить открытый текст