如何将 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));
我想将此 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));