如何将 C# RSA 转换为 php?

How to convert C# RSA to php?

我想将此 C# 转换为 php 以使用 phpseclib RSA 加密?这是 C#:

public static string Encrypt(string data)
{
    CspParameters cs = new CspParameters();
    RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
    rsa.FromXmlString("Key Goes here");
    var dataToEncrypt = _UNICODE.GetBytes(data);
    var encryptedByteArray = rsa.Encrypt(dataToEncrypt, false).ToArray();
    return Convert.ToBase64String(encryptedByteArray);
}

我想使用 phpseclib 和 RSA 将其转换为 php,如下所示:http://phpseclib.sourceforge.net/rsa/examples.html#encrypt,enc2

但我不懂 C#,也不知道如何将 _UNICODE.GetBytes(data)rsa.Encrypt(dataToEncrypt, false).ToArray() 转换为 php。请指教

var dataToEncrypt = _UNICODE.GetBytes(data); 将字符串转换为字节数组。 phpseclib 直接接受字符串,所以没有什么可以转换的。

至于rsa.Encrypt(dataToEncrypt, false).ToArray()...根据Encrypt(Byte[], Boolean)第二个参数是fOAEP,这样描述:

true to perform direct RSA encryption using OAEP padding (only available on a computer running Windows XP or later); otherwise, false to use PKCS#1 v1.5 padding

它 returns 一个字节数组 (byte[]) 所以 运行 通过 .ToArray() 的输出看起来有点奇怪,但无论如何。

无论如何,基于所有这些,我认为这应该可以解决问题:

$rsa = new RSA;
$rsa->loadKey("Key Goes here");
$rsa->setEncryptionMode(CRYPT_RSA_ENCRYPTION_PKCS1);
echo base64_encode($rsa->encrypt($data));