Преобразование java дешифрования шифра в эквивалент python - PullRequest
0 голосов
/ 28 мая 2020

Я пытаюсь преобразовать приведенный ниже код java в python:

CertificateFactory certFactory = CertificateFactory.getInstance("X.509");
serverCertificate = (X509Certificate) certFactory.generateCertificate(new FileInputStream(certFile));

Cipher decryptCipher = Cipher.getInstance("RSA");
decryptCipher.init(Cipher.DECRYPT_MODE, serverCertificate.getPublicKey());
byte[] decryptedClientChallengeBytes = decryptCipher.doFinal(encryptedClientChallengeBytes);

Первая часть, я думаю, решена с помощью этого:

from cryptography import x509
from cryptography.hazmat.backends import default_backend

cert = x509.load_pem_x509_certificate(key,default_backend())
cert = cert.public_key()

Но я не может преобразовать расшифрованную часть. Я пробовал различные методы, например PKCS1_v1_5.

Я пытаюсь реализовать это https://docs.oracle.com/en/cloud/saas/marketing/responsys-rest-api/RequestUserAuthorization.html

И шаг, который я сложил, говорит: «Вы должны получить следующий ответ от сервера. Расшифровать ( с использованием алгоритма RSA) зашифрованный clientChallenge с использованием ключа publi c сертификата сервера (который вы должны были загрузить и сохранить в своей системе). "

Полученное clientChallenge выглядит следующим образом:

"hc8w8gElQJQa45WGofZwsOAi4wwEIaFClI1A2PvvCw4YUc4rbnOpedkBgrNsr0FpZ6DVV_vnZNsAGg_ph75VqeKD-R-cy_RkQIdvn0W_nb0RvPGZI7zA98_t9-rJTiTSsrJ6j8KzlWV_MLydUcBBR1iotL6kXXuFKuXtTAniPx_b6do4D5p9iI7yhTfxp9knRRG6XoItgNGJwm8AnGsThIoZw9lSgUm3Dy9yzYvhXQDYKAUNc3tqd8WcSswlb5coN18Gc-We2E0xE7xehq15Ns4QNwX6WdRrfehSgOObdckUYAx7MyLT-vyfJ-APVEVrZmC18wo-Qr2A-n1NT0ARVQ"

Сертификат сервера - это .CER в следующем формате:

-----BEGIN CERTIFICATE-----
.....
-----END CERTIFICATE-----

Любая помощь будет замечательной!

...