1

我想将加密数据作为 ac# 项目的一部分发送到 php。php 页面应该对数据进行解密并对其执行一些操作,然后再次对其进行加密,并将其返回给 c# 应用程序。kyes 的外观存在问题:rsa 私钥:

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

php私钥:

-----开始 RSA 私钥----- MIICXAIBAAKBgQDARufsW5Z9I+P96RdfDEq8r5XYaC ......

我怎样才能将两者结合起来,或者除了密码学之外我还可以使用 C# 中的另一个类吗?

4

1 回答 1

2

尝试使用: 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

于 2013-08-25T13:59:19.363 回答