C#RSACryptoServiceProvider.Encrypt具有与PHP功能相同的功能

时间:2014-01-27 03:59:56

标签: c# php asp.net encryption rsa

我已经指定将一些C#代码转换为PHP。我真的不懂C#或任何Microsoft编程语言。我需要连接到具有 RSA 加密的Web服务,他们提供了公钥和用C#制作的示例代码(我需要转换)。下面是C#代码:

//SAMPLE data to encrypt
var data = "dfsdfpamf12031ad";

var flStr = "<BitStrength>1024</BitStrength><RSAKeyValue><Modulus>** some keys **</Modulus><Exponent>**exponent value **</Exponent></RSAKeyValue>";

var bitStr = flStr.Substring(0, flStr.IndexOf("</BitStrength>", StringComparison.InvariantCultureIgnoreCase) + 14); 

flStr = flStr.Replace(bitStr, "");
var bitStrength = Convert.ToInt32(bitStr.Replace("<BitStrength>", "").Replace("</BitStrength>", ""));
using (var rsaCrypto = new rsaCrypto(bitStrength))
{
    rsaCrypto.FromXmlString(flStr);
    var keySize = bitStrength / 8;
    var bytes = Encoding.UTF32.GetBytes(data);
    var maxLength = keySize - 42;
    var dataLength = bytes.Length;
    var iterations = dataLength / maxLength;
    var returnStr = new returnStr();
    for (var i = 0; i <= iterations; i++)
    {
        var tempBytes = new byte[(dataLength - maxLength * i > maxLength) ? maxLength : dataLength - maxLength * i]; // **i=0 ~ 86; i=1 ~ 42;** 
        Buffer.BlockCopy(bytes, maxLength * i, tempBytes, 0, tempBytes.Length);
        var encryptedBytes = rsaCrypto.Encrypt(tempBytes, true);
        returnStr.Append(Convert.ToBase64String(encryptedBytes));
    }
    return returnStr.ToString();
}

我不认为PHP中是否存在RSA字节加密。我相信PHP没有字节数据类型。我尝试使用openssl_public_encrypt函数和phpseclib库,但我认为8642在加密时会认为它是整数数据类型而不是字节。

我会很感激有关此问题的任何意见。提前致谢! :)

0 个答案:

没有答案