Я пытаюсь реализовать шифрование 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
@Med привет, Мед, я добавил код PHP
Из man-страница openssl_private_encrypt пробовали ли вы с $padding arg? По умолчанию он тоже OPENSSL_PKCS1_PADDING, но вы можете вместо этого захотеть OPENSSL_PKCS1_OAEP_PADDING




Я решил проблему.
В 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 в порядке , но ТАК сказал 2 дня спустя, тогда я могу отметить свой ответ как ответ темы :)
Какой PHP-код вы написали до сих пор?