我第一次接触密码学。我有几个问题,特别是关于在两个程序之间共享公钥的问题:
我有两个不同的应用程序。 一个用C ++编码,在Linux Ubuntu Server上运行。另一个用C#编码,在我当地的Windwos 7 Home-PC上运行。
这两个应用程序通过TCP连接,我想在它们之间建立安全连接。我决定使用 RSA算法。 我在Serverside上创建了一个密钥对,并将它们硬编码到C ++应用程序中。服务器的公钥也被硬编码到C#应用程序中。现在,当C#应用程序(客户端)连接到C ++应用程序(服务器)时,它应生成个人密钥对并将公钥发送到服务器。从这里开始,双方都可以加密他们的数据并将其发送给对方。
我的问题是我不能将公钥带到“相同的布局”。在服务器端,我必须使用OpenSSL-Library,因为C ++没有内置的RSA-Library。所以Key-Pair看起来像这样(例子):
$ openssl genrsa -out private_key.pem 2048
$ openssl rsa -pubout -in private_key.pem -out public_key.pem
-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEA0DTV2eG8BrhPVWgrqR1PhI5BwLCsuAiBCCDmSShaOsh1uKFW
j7lgBGWyGT77X55DAgXwvjNg+odDfili71poeH/f5/1kCTTC6FFoV6inY0nAcOZ3
...
...
...
...
mxTUFS1Q+vPsmoPCN+C5bP+zv415usUg1Mx8sSly5IS0IQzp2kR8EekhqKLQb06p
2qZfVCuGEXzT+NoT10SOGtZ2+izb+EZM/yRkJFUQS2YwpwPmcZGbAUg=
-----END RSA PRIVATE KEY-----
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0DTV2eG8BrhPVWgrqR1P
...
...
...
eH/f5/1kCTTC6FFoV6inY0nAcOZ3Ang1/fywxz5GVm430GuAqloZqNo/iwMZtHcU
aQIDAQAB
-----END PUBLIC KEY-----
当我在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>
最后,我的问题:
非常感谢你的帮助!