Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++;和C#:RSA加密/解密和共享密钥_C#_C++_Encryption_Cryptography_Rsa - Fatal编程技术网

C++;和C#:RSA加密/解密和共享密钥

C++;和C#:RSA加密/解密和共享密钥,c#,c++,encryption,cryptography,rsa,C#,C++,Encryption,Cryptography,Rsa,我第一次接触到密码学。我有几个问题,特别是关于在两个程序之间共享公钥的问题: 我有两个不同的应用程序。 一个是用C++编码的,然后在Linux Ubuntu服务器上运行。另一个是用C#编码的,在我本地的Windwos 7家用电脑上运行 这两个应用程序通过TCP连接,我想在它们之间创建一个安全连接。我决定使用RSA算法。 我在服务器端创建了一个密钥对,并将它们硬编码到C++应用程序中。服务器的公钥也硬编码到C#应用程序中。现在,当C++应用程序(客户端)连接到C++应用程序(服务器)时,它应该生成

我第一次接触到密码学。我有几个问题,特别是关于在两个程序之间共享公钥的问题:

我有两个不同的应用程序。 一个是用C++编码的,然后在Linux Ubuntu服务器上运行。另一个是用C#编码的,在我本地的Windwos 7家用电脑上运行

这两个应用程序通过TCP连接,我想在它们之间创建一个安全连接。我决定使用RSA算法。 我在服务器端创建了一个密钥对,并将它们硬编码到C++应用程序中。服务器的公钥也硬编码到C#应用程序中。现在,当C++应用程序(客户端)连接到C++应用程序(服务器)时,它应该生成一个个人密钥对并将公钥发送到服务器。从这里,双方都可以加密他们的数据并将其发送给对方

我的问题是我不能将公钥带到“相同的布局”。在服务器端,我必须使用OpenSSL库,因为C++没有内置的RSA库。因此,密钥对如下所示(示例):

当我在C#中创建密钥对时,它是XML格式的:

    <RSAKeyValue>
    <Modulus>w0tU2IBTdZkLB3G9sze92KR67hM3qdbnYCujrp/GflJ/EMgP1dQxTuHOueq+3DzZnUZDVtYic2QDAdJDVDqRiIFbff7+l5IE24kcgIJSN6vJdnSVAVbSzfyZkftsd4faYx055ZYSH3N4Ev52QepgXVKz7G3S+n2xslzFs09SDOVKiUvmXQEG4CsRef4uB1Kk2ElrZBBpuU3G/V4gNpGkQ/TuPbizQL/Oao3HNhxnCsqxzOOCmNoPSiCesWSWpoPTJrBm2jfX5nDJi+l5u3dYrRLpT8h844Y2yplCeDe4M3/maee3d+0+7Ul7m7H73o9nI+cBLWPOy6IYxPMl/kaJxw==</Modulus>
<Exponent>AQAB</Exponent>
    <P>4NcTOPdRa05QZy7wKRO6wIYA+tKlc4KkrAMy//xkupYyuTpnt8Zt0B0nsltaOenpJSGMOJOb1VfCH+2R6ol8xNr3yyzz2izHGzNdQAk7V2ant3TIjdUiHS9h8ftTjiANPFO1XZlUyeXQiqe3Qzrjubv8J51Nmk7TssH2fheqrAE=</P>
    <Q>3lwFj3P8NLJVWRBEpPDJdjRRF4Qz7SNxthRdtvoifUtcMXw3UDnzsEDZ7A736vUUaaZArjAzO+x3arDaAJfQQk354ushwWw6MGoM0CudfCeUrxy9hi5afnxueWFbhJ+/k9nwPxn9EBBrqfYhNZbGW9vz6ZfHLUX95a5M2+9+1cc=</Q>
    <DP>vC0FV44WRJrczB8KvTZX/L2qoEIgWxaiP5zF2F0i6M7AUSpCmBqo2Z8tFCdE0meky4DSXJ+dsuaqABLTJto+5HrnHNLYnGcRlQBeMTQIyFOQVwiUubABxy9a6C2Sdsb4jN76UgX8YqXG7eUEim4FHfPpTDZpNpZ2s4uGg23HWAE=</DP>
    <DQ>eER/gWqzc/Es9oI1Dp1p6fQ8FCMeTtoH6/qyAYDjXK+BCwbriAoAQ0mgVOx3rW6nfsk8XLqXS4cHw/4pu35hVyuDx/dzh4G5K2yAx6t/f6KM6fX6kHPL4HP+8Mn2zRH2dcrABfFRjfnDseb9aVXGrfKWx7afNV6RCESxL5gnGws=</DQ>
    <InverseQ>wlndxTYxYmAo0+BcyJjVri6Iui/l5p+AGUi6xglmI8HHE3itgyCjfyfsKmsphH88uYYu/qdA80PTIKLdxo7HbUhOiT7f2vtBsCFzo7oB9kTDWrJ70xsQss4jkJGY8rJj4K7Dqwqa6s78ih1heeQhCJuevg8xiEUoqHOx5FtlQ4w=</InverseQ>
    <D>NlIczn+bN0mTdMWhY1ks2Daf7tqvj/EzuF9LDwZoGrjtmQhcxzhXYr6SVspBvla6nPFvR5cWTAxUfcwzaBlGY7a/cSNdQ2GdMkdIA0K8hbmltuokjBPPXPZW7PEHMZQ7HXiCoyaD8fWXP4lB8YG0viCD5U6C8aPGqnr9jquQgf9EwXxEZvdktOWLO5PJvd4XaQRk47UcNBkjWnwxO1vq28/OSWTNaoEQqpLNwimHEFHl3MN2IuME1zV4MvKyGsKsKO9EytLk/RD28UDFZGlxU6uNAEjOjQp++CgbFRCEHNOCas5kTa1/fuxVg8RdnFeowAq2otWwhwGlwGiJjjmoAQ==</D>
    </RSAKeyValue>

2.这个词的意思是:一个单词(2)是一个单词(2)是一个单词(2)是一个单词(2)是一个单词(2)是一个单词(2)是一个单词(2)是一个单词(2)是一个单词(2)是一个单词(2)是一个单词(2)是一个单词(2)这个单词(2)是一个单词(2)是一个单词(2)是一个单词(2)2)是一个单词(2)2 2)2)是一个单词(2)2)2 2 2)2)是一个单词(2(2(2)是一个单词(2(2)是一个单词(2)是一个单词(2)2)2)2)2(2(2)是一个单词(2)2)2(2)2(2)是一个单词(2)2)2)是一个单词(2(2(2)2)2)2)2)2)ml/kaJxw==
AQAB

4NcTOPdRa05QZy7wKRO6wIYA+TKLC4KKKRAMY//XKUPYUTPT8ZT0B0NSLTAOENPJSGMOJOB1VFCH+2OL8XNR3YYZZZ2ZGHZNDQAK7V2ANTJKK8H8FTJUNKQQZRJJ51NMK7TSSH2FEQRAE=

3LWFJ3P8NLJVWRBPPDJDJRRF4QZ7SNXTHRDTVOIFUTCMXW3UDNZSEDZ7A736Vuuaazarjazo+X3ARDAAaJFQK354USHWWW6MGO0CUDFCURXY9HI5AFNXUEWFBHJ+/K9NWPXN9EBBRQFYHZBGW9VZ6ZFHLUX95A5M2+9+1cc= vC0FV44WRJrczB8KvTZX/L2qoEIgWxaiP5zF2F0i6M7AUSpCmBqo2Z8tFCdE0meky4DSXJ+dsuaqABLTJto+5HRNHNLYNGCRLQBQY9A6C2SDB4JN76UGX8YQXG7EUEIM4FHFPTDZPNPZ4UGG23HWAE= eER/gWqzc/ES9OI1DP1DP6FQ8FCMETTOH6/qyAYDjXK+BCwbriAoAQ0mgVOx3rW6nfsk8XLqXS4cHw/4pu35hVyuDx/dzh4G5K2yAx6t/f6KM6fX6kHPL4HP+8Mn2ZrH2DcraffNDSEB9AGRxW7AFNV6RCEL5GNGWS= wlndxTYxYmAo0+BcyJjVri6Iui/l5p+AGUI6GLMI8HITJFYFSKMSPH88UYU/QDA80PTIKLDXO7HBUHOIT7F2VTBSCFZO7OB9KTDWRJ70XSQS4JKJGY8RJ4K7DQWQA678IH1HEEQJJJJJ0EVG8IEUOQ5FTLQ4W= 2.在中国,中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的中国的一个中国的一个中国的中国的一个中国的中国的一个中国的一个中国的中国的一个中国的中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的中国的一个中国的中国的中国的TWWHWGLWGIJJJMOAQ==
最后,我的问题是:

  • “----开始RSA私钥------”等实际上是密钥的一部分吗?我很确定不是,但我最好确定一下。令人困惑的是,当我把这个文本放在密钥上并在C++应用程序上加密/解密时,它就工作了(用OpenSSL LIB)。
  • 如何将密钥带到相同的结构中,以便将它们从一个应用程序发送到另一个应用程序并正确解析它们

非常感谢你的帮助

为什么要弄乱您自己创建的系统,而不使用现有的经验证的系统,如客户端和服务器之间的SSL连接?当然这也是一个解决方案。但我想进入主题,了解两个客户端之间的不对称加密是如何工作的。通常,客户端不使用不对称进行通信。他们使用非对称加密传输临时会话密钥进行对称加密,因为它的速度快了几个数量级,而且同样安全。谢谢大家。我现在使用SSL的目的是:)
    <RSAKeyValue>
    <Modulus>w0tU2IBTdZkLB3G9sze92KR67hM3qdbnYCujrp/GflJ/EMgP1dQxTuHOueq+3DzZnUZDVtYic2QDAdJDVDqRiIFbff7+l5IE24kcgIJSN6vJdnSVAVbSzfyZkftsd4faYx055ZYSH3N4Ev52QepgXVKz7G3S+n2xslzFs09SDOVKiUvmXQEG4CsRef4uB1Kk2ElrZBBpuU3G/V4gNpGkQ/TuPbizQL/Oao3HNhxnCsqxzOOCmNoPSiCesWSWpoPTJrBm2jfX5nDJi+l5u3dYrRLpT8h844Y2yplCeDe4M3/maee3d+0+7Ul7m7H73o9nI+cBLWPOy6IYxPMl/kaJxw==</Modulus>
<Exponent>AQAB</Exponent>
    <P>4NcTOPdRa05QZy7wKRO6wIYA+tKlc4KkrAMy//xkupYyuTpnt8Zt0B0nsltaOenpJSGMOJOb1VfCH+2R6ol8xNr3yyzz2izHGzNdQAk7V2ant3TIjdUiHS9h8ftTjiANPFO1XZlUyeXQiqe3Qzrjubv8J51Nmk7TssH2fheqrAE=</P>
    <Q>3lwFj3P8NLJVWRBEpPDJdjRRF4Qz7SNxthRdtvoifUtcMXw3UDnzsEDZ7A736vUUaaZArjAzO+x3arDaAJfQQk354ushwWw6MGoM0CudfCeUrxy9hi5afnxueWFbhJ+/k9nwPxn9EBBrqfYhNZbGW9vz6ZfHLUX95a5M2+9+1cc=</Q>
    <DP>vC0FV44WRJrczB8KvTZX/L2qoEIgWxaiP5zF2F0i6M7AUSpCmBqo2Z8tFCdE0meky4DSXJ+dsuaqABLTJto+5HrnHNLYnGcRlQBeMTQIyFOQVwiUubABxy9a6C2Sdsb4jN76UgX8YqXG7eUEim4FHfPpTDZpNpZ2s4uGg23HWAE=</DP>
    <DQ>eER/gWqzc/Es9oI1Dp1p6fQ8FCMeTtoH6/qyAYDjXK+BCwbriAoAQ0mgVOx3rW6nfsk8XLqXS4cHw/4pu35hVyuDx/dzh4G5K2yAx6t/f6KM6fX6kHPL4HP+8Mn2zRH2dcrABfFRjfnDseb9aVXGrfKWx7afNV6RCESxL5gnGws=</DQ>
    <InverseQ>wlndxTYxYmAo0+BcyJjVri6Iui/l5p+AGUi6xglmI8HHE3itgyCjfyfsKmsphH88uYYu/qdA80PTIKLdxo7HbUhOiT7f2vtBsCFzo7oB9kTDWrJ70xsQss4jkJGY8rJj4K7Dqwqa6s78ih1heeQhCJuevg8xiEUoqHOx5FtlQ4w=</InverseQ>
    <D>NlIczn+bN0mTdMWhY1ks2Daf7tqvj/EzuF9LDwZoGrjtmQhcxzhXYr6SVspBvla6nPFvR5cWTAxUfcwzaBlGY7a/cSNdQ2GdMkdIA0K8hbmltuokjBPPXPZW7PEHMZQ7HXiCoyaD8fWXP4lB8YG0viCD5U6C8aPGqnr9jquQgf9EwXxEZvdktOWLO5PJvd4XaQRk47UcNBkjWnwxO1vq28/OSWTNaoEQqpLNwimHEFHl3MN2IuME1zV4MvKyGsKsKO9EytLk/RD28UDFZGlxU6uNAEjOjQp++CgbFRCEHNOCas5kTa1/fuxVg8RdnFeowAq2otWwhwGlwGiJjjmoAQ==</D>
    </RSAKeyValue>