C# 将RSA加密代码从.net转换为PHP

C# 将RSA加密代码从.net转换为PHP,c#,php,.net,C#,Php,.net,我有一些C#.net代码需要转换为PHP,但我在这方面遇到了一些问题,如果有任何帮助,我将不胜感激 这段代码基本上加密了XML的一部分 RSACryptoServiceProvider rsaCryptoServiceProvider = new RSACryptoServiceProvider(); rsaCryptoServiceProvider.FromXmlString(GetCertificates(certificateSerialNumber).PrivateKey

我有一些C#.net代码需要转换为PHP,但我在这方面遇到了一些问题,如果有任何帮助,我将不胜感激

这段代码基本上加密了XML的一部分

    RSACryptoServiceProvider rsaCryptoServiceProvider = new RSACryptoServiceProvider();
    rsaCryptoServiceProvider.FromXmlString(GetCertificates(certificateSerialNumber).PrivateKey.ToXmlString(true));
    return Convert.ToBase64String(rsaCryptoServiceProvider.SignData(Encoding.Unicode.GetBytes(elementsValue), CryptoConfig.MapNameToOID("SHA256")));
到目前为止,我有:

function encrypt($message) {
    $priv = "---privatekey---";
    openssl_private_encrypt($message, $encrypted, $priv, OPENSSL_PKCS1_PADDING);
    return base64_encode($encrypted);
}
但是我似乎不能产生与上面代码相同的加密


谢谢。

对于RSA,您可以使用phpseclib:

请记住使用您的
私钥

<?php
include('Crypt/RSA.php');

$privatekey = file_get_contents('private.key');

$rsa = new Crypt_RSA();
$rsa->loadKey($privatekey);

$plaintext = new Math_BigInteger('aaaaaa');
echo $rsa->_exponentiate($plaintext)->toBytes();
?>



请注意-加密是用公钥完成的,解密是用私钥运行的。第二,不要使用Unicode,而是Utf8编码。梅里·X-masI我知道是这样,但我正在处理的组织出于某种原因采取了另一种方式,他们不会采取任何其他方式。