Шифрование RSA: код Java в код PHP

Я пытаюсь реализовать шифрование RSA как в Java, так и в PHP, но я не могу заставить PHP выводить тот же зашифрованный результат с Java.

Код Java

public static String sign(byte[] data,String privateKey)throws Exception{
    byte[] keyBytes = Base64.decodeBase64(privateKey);
    PKCS8EncodedKeySpec pkcs8EncodedKeySpec = new PKCS8EncodedKeySpec(keyBytes);

    //KEY_ALGORTHM = "RSA";
    KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORTHM);
    PrivateKey privateKey2 = keyFactory.generatePrivate(pkcs8EncodedKeySpec);

    //SIGNATURE_ALGORITHM = "SHA1WithRSA"
    Signature signature = Signature.getInstance(SIGNATURE_ALGORITHM);
    signature.initSign(privateKey2);
    signature.update(data);
    return Base64.encodeBase64String(signature.sign());
}

Код PHP

public function sign( string $data,string $privateKey){
      openssl_private_encrypt($data,$encrypted,$privateKey);
      return base64_encode($encrypted);
}

Может ли кто-нибудь помочь мне перевести его на PHP-код?

Любая помощь будет принята с благодарностью o.O

Какой PHP-код вы написали до сих пор?

Med 17.04.2018 09:57

@Med привет, Мед, я добавил код PHP

eric 17.04.2018 10:05

Из man-страница openssl_private_encrypt пробовали ли вы с $padding arg? По умолчанию он тоже OPENSSL_PKCS1_PADDING, но вы можете вместо этого захотеть OPENSSL_PKCS1_OAEP_PADDING

IsThisJavascript 17.04.2018 10:22
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
3
299
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я решил проблему.

В Java-коде SIGNATURE_ALGORITHM - это 'SHA1WithRSA'

Итак, в PHP-коде

public function sign( string $data,string $privateKey){
  openssl_sign($data,$sign,$privateKeyString,OPENSSL_ALGO_SHA1);
  return base64_encode($encrypted);
}

Хороший материал, отметьте, пожалуйста, это как ответ, чтобы можно было закрыть тему =)

IsThisJavascript 17.04.2018 10:28

@IsThisJavascript в порядке , но ТАК сказал 2 дня спустя, тогда я могу отметить свой ответ как ответ темы :)

eric 17.04.2018 11:49

Другие вопросы по теме