当前位置: 首页 > 编程语言 > C#

RSA解密C#(.NET3.5)中的数据,php5.3.2中使用openssl加密共享

时间:2023-04-10 18:41:31 C#

RSA解密C#(.NET3.5)中的数据,php5.3.2中使用openssl加密也许有人可以让我知道。我一直在网上冲浪一段时间。步骤1:在unix上创建根证书密钥生成1)opensslreq-x509-nodes-days3650-newkeyrsa:1024-keyoutprivatekey.pem-outmycert.pem2)opensslrsa-inprivatekey.pem-pubout-outpublickey.pem3)opensslpkcs12-export-outmycertprivatekey.pfx-inmycert.pem-inkeyprivatekey.pem-name"mycertificate"第2步:根证书是否可用于php:是PHP端我使用publickey.pem阅读它进入php:$publicKey="file://C:/publickey.pem";$privateKey="文件://C:/privatekey.pem";$plaintext="123";openssl_public_encrypt($plaintext,$encrypted,$publicKey);$transfer=base64_encode($encrypted);openssl_private_decrypt($encrypted,$decrypted,$privateKey);回声$解密;//"123"或$server_public_key=openssl_pkey_get_public(file_get_contents("C:publickey.pem"));//rsa加密openssl_public_encrypt("123",$encrypted,$server_public_key);//和privatekey.pem检查它是否有效:openssl_private_decrypt($encrypted,$decrypted,openssl_get_privatekey(file_get_contents("C:privatekey.pem")));回声$解密;//“123”得出结论,使用这些openssl根证书文件方式,加密/解密在php端工作正常,我将密钥读入.netC#控制台程序:X509Certificate2myCert2=null;RSACryptoServiceProviderrsa=null;尝试{myCert2=newX509Certificate2(@"C:mycertprivatekey.pfx","password");rsa=(RSACryptoServiceProvider)myCert2.PrivateKey;}catch(Exceptione){Console.writeln(e.message);//因为我留下了一个空白的catch块,所以我没有意识到有异常!我忘记了证书的密码。}byte[]test={Convert.ToByte("123")};字符串t=Convert.ToString(rsa.Decrypt(rsa.Encrypt(test,false),false));说到这里,加密/解密是在c#end中完成的,可以很好地处理这些openssl根证书文件。第4步:在php中解密并在.NET中解密:是的PHP端$onett="123"....openssl_public_encrypt($onett,$encrypted,$server_public_key);$onettbase64=base64_encode($encrypted);复制–粘贴$onettbase64(“LkU2GOCy4lqwY4vtPI1JcsxgDgS2t05E6kYghuXjrQe7hSsYXETGdlhzEBlp+qhxzTXV3pw+AS5bEg9CPxqHus8fXHOnXYqsd2HL20QSaz+FjZee6Kvva0cGhWkFdWL+ANDSOWRWo/OMhm7JVqU3P/44c3dLA1eu2UsoDI26OMw=”)到C#程序:C#方面byte[]transfered_onett=rsa.Decrypt(Convert.FromBase64String("LkU2GOCy4lqwY4vtPI1JcsxgDgS2t05E6kYghuXjrQe7hSsYXETGdlhzEBlp+qhxzTXV3pw+AS5bEg9CPxqHus8fXHOnXYqsd2HL20QSaz+FjZee6Kvva0cGhWkFdWL+ANDSOWRWo/OMhm7JVqU3P/44c3dLA1eu2UsoDI26OMw="),false);字符串结果=System.Text.Encoding.UTF8.GetString(transferred_onett);//"123"没问题。您需要使用为PFX(又名pkcs#12)文件设计的X509Certificate2构造函数之一。这些采用密码参数。在您的原始示例中,您默默地吞下了所有异常,因此您错过了错误。这解决了它。我忘了填充catch块,所以我没有意识到c#端读取的证书有异常。有了读取证书,现在解密就没问题了。以上是C#学习教程:RSA在C#(.NET3.5)中解密数据。数据在php5.3.2中被加密并与openssl共享。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注——本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: