Я пытаюсь зашифровать материал в Java с помощью открытого ключа, сгенерированного моей PHP:PHP и Java Decrpytion ошибка при использовании PhpSecLib и BouncyCastle
PHP код
$rsa = new Crypt_RSA();
$rsa->setEncryptionMode(CRYPT_RSA_ENCRYPTION_PKCS1);
$rsa->setPrivateKeyFormat(CRYPT_RSA_PRIVATE_FORMAT_PKCS1);
$rsa->setPublicKeyFormat(CRYPT_RSA_PUBLIC_FORMAT_PKCS1);
$keys = $rsa->createKey(1024);
extract($keys);
echo (base64_encode($publickey));
Для целей тестирования, я отложите ключевую пару (base64) вышеуказанного формата.
Я извлекаю свой открытый ключ в java и base64, декодируя его.
String publicKeyDecoded = new String(Base64.decode(publicKey));
PEMParser pr = new PEMParser(new StringReader(publicKeyDecoded));
Object obj = pr.readObject();
pr.close();
SubjectPublicKeyInfo spki = (SubjectPublicKeyInfo) obj;
AsymmetricKeyParameter askp = PublicKeyFactory.createKey(spki);
AsymmetricBlockCipher e = new RSAEngine();
e = new org.bouncycastle.crypto.encodings.PKCS1Encoding(e);
e.init(true, askp);
byte[] messageBytes = plainText.getBytes();
byte[] encryptedData = e.processBlock(messageBytes, 0, messageBytes.length);
byte[] encryptedDataBase = Base64.encode(encryptedData);
Я посылаю Base64 зашифрованного открытого текста обратно в PHP для дешифрования, используя следующие:
$rsa->loadKey($privatekey) or die ("Cant load");
echo $rsa->decrypt($cipher);
Это не может decrpyt мой закодированное сообщение и бросает мне ошибку:
Decryption error in <b>/opt/lampp/htdocs/Crypt/RSA.php</b> on line <b>2120</b>
Can кто-то указал мне в правильном направлении? Прошло несколько часов с тех пор, как я пытался понять это.
Я использую жёстко прописанные ключи, так что я предполагаю, что нет никаких сомнений в моих ключах ошибиться ...
Вы устанавливаете режим шифрования в PHP при создании ключа. Вы настраиваете его, когда расшифровываете зашифрованный текст? – neubert