2013-08-25 3 views
0

У меня есть проект C#, который я хочу отправить зашифрованные данные на php-страницу, php-страница должна расшифровать эти данные и выполнить некоторую операцию над ним, а затем снова зашифровать его и вернуть обратно в приложение C# Я использовал в C# классе криптографии но проблема в том, что секретный ключ RSA выглядеть следующим образомRSA интеграция

uGUskwU/GVS1HjBVBa9ECPDRH04fH ............

хотя это PHP секретный ключ выглядеть как этот

----- НАЧАТЬ RSA PRIVATE KEY ----- MIICXAIBAAKBgQDARufsW5Z9I + P96RdfDEq8r5XYaC ......

Как я могу сделать интеграцию между ними обоими?
Или есть класс, который я могу использовать, кроме криптографии, чтобы выполнить мою работу?

ответ

1

Попробуйте использовать: http://phpseclib.sourceforge.net/

Генерировать ключи:

openssl genrsa -out private.pem 1024 
openssl rsa -in private.pem -out public.pem -outform PEM -pubout 

Копировать в PHP:

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

$privateKey="-----BEGIN RSA PRIVATE KEY----- 
MIICXQIBAAKBgQDr5KvAc6JX22BdpsfQbWam8rjkwJzTC954XQzhLOPeGiAGfkPm 
CLYhBrmxZN6NxiseivpN9yzrRjYeccr+s3A/8q1EbdhmmM4+AxdNzATEsUxL//MS 
VXCaoJhGOfXswokFT8HQod9M6VMmuyDaw9iEorLavV6J/nCmq2HIutcbbwIDAQAB 
AoGBAMt2dgnN8zXSW2ELrIcDBapz6rQrylhigWXR5H0IKhb087CGEeyEkQsVcO8o 
MKmaRrDWcKT00IKyEZXa0pszjFmD6f90H6TrV6BwZKEynAUVqaX4CCn6x9wgppMA 
hWg3eYgoUME3Xgr1Iugb4rqtocEL7Vww/NoUgLXhzHH4RNz5AkEA+mZN2189Te3m 
LmXFIJhV+GxrDmYrgJ0csjoEFHAxKJ52lsXTe1VODWbGWAv59jOrbUKe/aQaj4N1 
IcTinF3jBQJBAPErTwBKvHznU9dC0eY+JRpwm4Xb9zCNqaG/Ir5N8Gc1U0YLJh9D 
vRhtyT9+shwRPznklkc8DKwFaEU7HSiw9uMCQGLK9FLmG6jggN2zd3gpwlmWZRK0 
StueoVDMRQnPTgXpp35LJOpXOMle0EiyyPdTYYJlM5d9JKGUyyT8qi/pdwUCQQCE 
jp9vs6SCqsukh+/DM+lE7RwuqUbnAxZ39wzruP8oW2EYIMylZqArKzzwj3zqfHha 
I9CN+u2kJ5y2YNWYJhytAkA53cDUSL9Wo9pq5hw1C1SWNcimteeQmfQ8f0SMegDW 
fZ4rCjGczF82UpB12Cqo8SiK8xrCZAxfnSmSI248oCWe 
-----END RSA PRIVATE KEY-----"; 
$publicKey="-----BEGIN PUBLIC KEY----- 
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDr5KvAc6JX22BdpsfQbWam8rjk 
wJzTC954XQzhLOPeGiAGfkPmCLYhBrmxZN6NxiseivpN9yzrRjYeccr+s3A/8q1E 
bdhmmM4+AxdNzATEsUxL//MSVXCaoJhGOfXswokFT8HQod9M6VMmuyDaw9iEorLa 
vV6J/nCmq2HIutcbbwIDAQAB 
-----END PUBLIC KEY-----"; 

$rsa = new Crypt_RSA(); 
$rsa->loadKey($publicKey); // public key 

$plaintext = 'I am a secret.. shhhhhh.'; 

$rsa->setEncryptionMode(CRYPT_RSA_ENCRYPTION_PKCS1); 
$ciphertext = $rsa->encrypt($plaintext); 

$rsa->loadKey($privateKey); // private key 
echo $rsa->decrypt($ciphertext); 
?> 

Вы можете использовать разные ключи, но код PHP должен шифровать данные с помощью C# общественности и код C# должен использовать открытый ключ php для шифрования данных, отправленных в PHP-код.

У вас также могут быть только два ключа, один частный и один общественный и использовать с обеих сторон.

Взгляните на этот ответ делать это на C# стороне: https://stackoverflow.com/a/1162519/2715306 И это: https://stackoverflow.com/a/251757/2715306

+0

благодарственное @noam В дополнение вашей статьи это один помочь мне –

Смежные вопросы