я пытаюсь зашифровать строку в приложении С#, чтобы она была расшифрована на стороне PHP с помощью openssl_private_decrypt(). исходный открытый ключ, который я пытаюсь расшифровать, получен из PHP openssl_pkey_get_details($privateKey); забегая вперед, я могу сделать это с помощью чилката, но он не работает в монотаче под iOS, поэтому для меня он бесполезен (и стоит тоже довольно дорого). есть пример кода, как я это делаю:
void TestEncryption(string publicKey, string data)
{
var bytes = Encoding.UTF8.GetBytes(data);
//by using chilkat
var key = new Chilkat.PublicKey();
var result = key.LoadOpenSslPem(publicKey);
var ck = new Chilkat.Rsa();
ck.UnlockComponent("blablabla");
var keyXml = key.GetXml();
ck.ImportPublicKey(keyXml);
var ckBytes = ck.EncryptBytes(bytes, false);
//by using BouncyCastle
Object obj;
using (TextReader sr = new StringReader(publicKey))
{
PemReader pem = new PemReader(sr);
obj = pem.ReadObject();
}
var par = obj as Org.BouncyCastle.Crypto.Parameters.RsaKeyParameters;
RsaEngine e = new RsaEngine();
e.Init(true, par);
var bcBytes = e.ProcessBlock(bytes, 0, bytes.Length);
//RSACryptoServiceProvider. don't know exectly how to initialize it, one way that must work i think is from chilkat's xml, just to test
RSACryptoServiceProvider csp = new RSACryptoServiceProvider(1024);
csp.FromXmlString(keyXml);
//also tryed to initialize like this:
//var pp = csp.ExportParameters(false);
//pp.Modulus = byteKey; //this one is publicKey, stripped from --begin-- and --end-- sections and encoded from base64 to byte array (162 bytes)
//csp.ImportParameters(pp);
//
//or if i do
//var pp = new RSAParameters();
//pp.Exponent = Convert.FromBase64String("AQAB");
//pp.Exponent array is the same: {1, 0, 1};
var cspBytes = csp.Encrypt(bytes, false); //or (bytes, true), doesn't matter
//this function sends request to php and returns result of decryption attempt
Debug.WriteLine(ExecRequest(ckBytes));
Debug.WriteLine(ExecRequest(bcBytes));
Debug.WriteLine(ExecRequest(cspBytes));
}
вывод:
success
decryption failed
decryption failed
что мне не хватает?