Может кто-нибудь помочь мне преобразовать из знака Java в код php, используя phpseclib
public string SignData(string _data,string _priKey)
{
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(2048);
rsa.FromXmlString(_priKey);
UnicodeEncoding ByteConverter = new UnicodeEncoding();
byte[] dataToEncrypt = ByteConverter.GetBytes(_data);
byte[] signature = rsa.SignData(dataToEncrypt,'sha256');
string result = Convert.ToBase64String(signature);
return result;
}
Я использую это, но это не работает (в laravel)
use phpseclib\Crypt\RSA;
$rsa = new RSA();
$rsa->setHash('sha256');
$rsa->setSignatureMode(2);
$privateXmlKey = '<RSAKeyValue><Modulus></Modulus><Exponent>AQAB</Exponent><P></P><Q></Q><DP></DP><DQ></DQ><InverseQ></InverseQ><D></D></RSAKeyValue>';
$rsa->loadKey($privateXmlKey, 2);
$text = 'sample data';
$plainText = mb_convert_encoding($text, 'UTF-16');
$sign = $rsa->sign($plainText);
$sign = base64_encode($sign);
Я пробовал оба режима подписи: CRYPT_RSA_SIGNATURE_PKCS1
и CRYPT_RSA_SIGNATURE_PSS
Большое спасибо