将RSA公钥和私钥导入VB.NET

将RSA公钥和私钥导入VB.NET,vb.net,key,rsa,Vb.net,Key,Rsa,我对RSA加密有点陌生。我使用PGPfreeware 6.5.8创建了一个RSA密钥对,我正在编写一个VB.NET代码,用于加密和解密XML文件中的字段。我导出了包含公钥和私钥的RSA密钥,文件扩展名为.asc(ASCII)。我得到了这种格式的公钥和私钥: -----BEGIN PGP PRIVATE KEY BLOCK----- Version: PGPfreeware 6.5.8 for non-commercial use <http://www.pgp.com> lQOfA

我对RSA加密有点陌生。我使用PGPfreeware 6.5.8创建了一个RSA密钥对,我正在编写一个VB.NET代码,用于加密和解密XML文件中的字段。我导出了包含公钥和私钥的RSA密钥,文件扩展名为.asc(ASCII)。我得到了这种格式的公钥和私钥:

-----BEGIN PGP PRIVATE KEY BLOCK-----
Version: PGPfreeware 6.5.8 for non-commercial use <http://www.pgp.com>

lQOfA1Tnk1QAAAEIANl3u0UiHAEShaaHRqqL+5nFsrJSHSsRWnPbYjbT7CeJro6Z
Yiwd897w2UW5e7f9sBE6wQBg5qxPodP/kE+70xOlNcCRoV2NexoO8ldDWsm6Sb8s
nB5Paa3cvjC76NZL8E9lGkaPYICJIzN2LtDsgYtYzNnpL4hJ9lHBjeYFr8PGgkQO
7gnVSCGJvDfo9Ov+mmq94aS8eIfMSkyy58zGU4qifbiNF8vBDYhB03H+sdmEDhGx
WH+oWp5LWOgIytW/ZKRuALU75omyeBhVz+nVxziXl1cQR1cahG3fGpaEZDs3SW2t
GDnL2T/z0ED+HVh86yId2+pFimkWlmMiQqqSOK0ABREBod8mktdzj5IH+PvIArUB
4zUTzhvO9WOW5nE62EWDaOiMvofdTDqNHwNkL8JZvSt09wwT24KOhMQqJOgjI0xF
Wl6abL4gsiQ8f7Dy7Fj5+rgepsd9lrAbDPvk5xsy47YMsoPClADfmzWUdaFrLZYc
ZYDPIYwLuzwhkl7qr14WGBY3OKRP9e/oU2oD2AtF2M0tMvaaaE5qiR1+HtpmNy1s
N/fZzUOUOyjypKXWIBHG6gEfm8MfxkYxECnPkHWWjwWCKe4lFw2hnKKhjjC64kSH
asqkZDQ5OekT+icb5H4J94pcn9L4xbwQGpIenPuCYbU2WiJPKhdt1w9C9EsWavpG
4lDvjPxFC8jlZQQALns8/MdcoX8eoOZvse3Iy++lQGNix6CzaKbet4mBRHMCyUD/
HTt0BQVi7fF4u9/edXuQvN/DIZxhwxYoiZB2P18zhkqyhXPUUQMEeDuf4KazaV/0
TfPJ9PC+9WwL4jfrNw1DywKQB1nhz/P54leQbvXdp4/4hlXQxXIj9Jjriz4EANlD
I/WFS87GZtTKJdIQbu7CtyQIF1Ykob1vgPy+/1wJhJMc/O6S+WHjl7WODNc0qIF/
l1CjM2d6h3xU4m2Ng51tfrb8D9uD05B7vVOGRaEqh8lpayjXn9PAOlmqAXhDZMjr
caxjT3ncdxiJzjBFuaLcIs9d8r5amvtzFMnpB2BGA/20c0+XulFlksPa9lB8frft
r1APvYNaLm5VfqweXl8VS6Zw1KEy19RbhxpOYJ1GfrdptsqG8SvXhfzGLILzHos0
QUCYBr7ymlj5cC3CClhFpTi2E5yQntuOlUtk5JTznaG3RZxUlQy/hsU3Js/q18UH
KDvKMMiW/BPQAdpOJZcVcEt7tCFBbmFzIE4uIE1vdXNhIDxhbW91c2FAbWVkY29y
LmNvbT4=
=pxF6
-----END PGP PRIVATE KEY BLOCK-----
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: PGPfreeware 6.5.8 for non-commercial use <http://www.pgp.com>

mQENA1Tnk1QAAAEIANl3u0UiHAEShaaHRqqL+5nFsrJSHSsRWnPbYjbT7CeJro6Z
Yiwd897w2UW5e7f9sBE6wQBg5qxPodP/kE+70xOlNcCRoV2NexoO8ldDWsm6Sb8s
nB5Paa3cvjC76NZL8E9lGkaPYICJIzN2LtDsgYtYzNnpL4hJ9lHBjeYFr8PGgkQO
7gnVSCGJvDfo9Ov+mmq94aS8eIfMSkyy58zGU4qifbiNF8vBDYhB03H+sdmEDhGx
WH+oWp5LWOgIytW/ZKRuALU75omyeBhVz+nVxziXl1cQR1cahG3fGpaEZDs3SW2t
GDnL2T/z0ED+HVh86yId2+pFimkWlmMiQqqSOK0ABRG0IUFuYXMgTi4gTW91c2Eg
PGFtb3VzYUBtZWRjb3IuY29tPokBFQMFEFTnk1SWYyJCqpI4rQEBZJwH/i+HfaZk
dnhPFNVZu/Noy6z1EMHylQSGODMBWZskPOGmhfnzQT9Ex9qbPfpdD9XTMEYRiR2j
iqkMpZOHlnVuk9dxCFM0q+QvZ6AYFo8OVQSiO4FbQ4evD/qBp4IxiSgKV0+20e4y
XKZbdiIue8wXjzXEv/DB8wmNZLL114gwYrmYPPdBtvqyKuTNjubu3jFX6WYrC4F7
Yi713XwnjS810YIeVo00dUOEnyBzDhLaRDLuWB4cQw3dpD7iRf0xz4yIWsCjRFj1
p7ZDpjfSVi6rDWBWgb2Vlh0jcY3wXuE5EZAAgPzBAmHWFxmegDfeIkpN243BWjrf
w3cqJLJvkMxU4DE=
=ds/P
-----END PGP PUBLIC KEY BLOCK-----
----开始PGP私钥块-----
版本:PGPfreeware 6.5.8,用于非商业用途
lQOfA1Tnk1QAAAEIANl3u0UiHAEShaaHRqqL+5nFsrJSHSsRWnPbYjbT7CeJro6Z
Yiwd897w2UW5e7f9sBE6wQBg5qxPodP/kE+70xOLNCCROV2NExO8LDDWSM6SB8S
NB5PAA3CVJC76NZL8E9LGKAPYICJIZN2LTDSGYTYZNp4HJ9LHBJEYFR8PGGKQO
7gnVSCGJvDfo9Ov+MMQ94AS8EIFMSKY58ZGU4QIFBINF8VBDYHB03H+sdmEDhGx
WH+oWp5LWOgIytW/ZKRUALU75MYEBHVZ+nVxziXl1cQR1cahG3fGpaEZDs3SW2t
GDnL2T/z0ED+HVh86yId2+PFIMKWLMMIQQSOK0ABREBOD8MKTDZJ5IH+PvIArUB
4ZUTZHVO9WOW5NE62EWDAOIMVOFDTDQNHWNKL8JZVST09WWT24KOHMQJOGJI0xF
Wl6abL4gsiQ8f7Dy7Fj5+RGEPSD9LRABDPVK5xSY47YMSOPCLADFMZWDAFRLZYC
ZYDPIYwLuzwhkl7qr14WGBY3OKRP9e/OU2OD2ATF2M0TMVAAE5QIR1+HtpmNy1s
N/Fzzuoyjypkxwibhg6gefm8mfxkyxecnpkhwwjwcke4lfw2hnkkhjc64ksh
asqkZDQ5OekT+icb5H4J94pcn9L4xbwQGpIenPuCYbU2WiJPKhdt1w9C9EsWavpG
4ldvjpxfc8jlzqalns8/MdcoX8eoOZvse3Iy++lQGNix6CzaKbet4mBRHMCyUD/
HTt0BQVi7fF4u9/edXuQvN/DIZxhwxYoiZB2P18zhkqyhXPUUQMEeDuf4KazaV/0
TfPJ9PC+9WwL4jfrNw1DywKQB1nhz/P54leQbvXdp4/4hlXQxXIj9Jjriz4EANlD
I/WFS87GZtTKJdIQbu7CtyQIF1Ykob1vgPy+/1wJhJMc/O6S+WHjl7WODNc0qIF/
L1CJM2D6H3XU4M2NG51TFRB8D9UD05B7VVOGRAEQH8LPAYJXN9PAOLMQAQHDZMJR
caxjT3ncdxiJzjBFuaLcIs9d8r5amvtzFMnpB2BGA/20c0+XulFlksPa9lB8frft
R1apvynalm5vfqwexl8vs6zw1key19rbhxpoyj1gfrdptsqg8svxhfzgllzhos0
QUCYBR7YMLJ5CC5CLHLFPTI2E5YQNTUOLUTK5JTZNAG3RZXULQY/hsU3Js/q18UH
KDvKMMiW/BPQAdpOJZcVcEt7tCFBbmFzIE4uIE1vdXNhIDxhbW91c2FAbWVkY29y
LmNvbT4=
=pxF6
-----结束PGP私钥块-----
-----开始PGP公钥块-----
版本:PGPfreeware 6.5.8,用于非商业用途
MQENANK1QAAEIANL3U0UIHAESHAAHRQQL+5nFsrJSHSsRWnPbYjbT7CeJro6Z
Yiwd897w2UW5e7f9sBE6wQBg5qxPodP/kE+70xOLNCCROV2NExO8LDDWSM6SB8S
NB5PAA3CVJC76NZL8E9LGKAPYICJIZN2LTDSGYTYZNp4HJ9LHBJEYFR8PGGKQO
7gnVSCGJvDfo9Ov+MMQ94AS8EIFMSKY58ZGU4QIFBINF8VBDYHB03H+sdmEDhGx
WH+oWp5LWOgIytW/ZKRUALU75MYEBHVZ+nVxziXl1cQR1cahG3fGpaEZDs3SW2t
GDnL2T/z0ED+HVh86yId2+PFIMKWLMMIQQSOK0ABRG0IUFUYXMGTI4GTW91C2EG
PGFtb3VzYUBtZWRjb3IuY29tPokBFQMFEFTnk1SWYyJCqpI4rQEBZJwH/i+HfaZk
dnhPFNVZu/Noy6z1EMHylQSGODMBWZskPOGmhfnzQT9Ex9qbPfpdD9XTMEYRiR2j
iqkMpZOHlnVuk9dxCFM0q+QvZ6AYFo8OVQSiO4FbQ4evD/qBp4IxiSgKV0+20e4y
XKZbdiIue8wXjzXEv/DB8wmNZLL114gwYrmYPPdBtvqyKuTNjubu3jFX6WYrC4F7
YI713xWNWJS810YIEV00DUOENYBZDHLARDLUWB4CQW3DPD7IRF0XZ4YIWSCJRFJ1
p7ZDpjfSVi6rDWBWgb2Vlh0jcY3wXuE5EZAAgPzBAmHWFxmegDfeIkpN243BWjrf
w3cqJLJvkMxU4DE=
=ds/P
-----结束PGP公钥块-----
当我试图将公钥和私钥传递给我的RSACryptServiceProvider对象时,我发现这些密钥的形式是.NET无法处理的。NET只处理XML公钥和私钥。我在互联网上搜索,发现这种格式的键是使用Base64转换原始文本的结果,所以我尝试将它们转换回正常文本,而不是Base64文本,这样我就可以——希望如此——将它们导入到我的对象中,但我得到一个FormatException,说:Base-64字符串中的字符无效。我做错了什么?如何使文件作为RSA对象的公钥和私钥工作


谢谢。

格式不兼容远远超出了base64(实际上是ascii)编码;OpenPGP密钥格式基本上与.Net支持的任何格式都不兼容。有一个用C#编写的第三方库叫做Bouncycastle,它可以提供帮助,但显然不是VB。我在互联网上搜索时看到了这个库(Bouncycastle)和其他一些库,但我仍在寻找是否有办法将文件格式转换为可读的XML格式(这与您现在的答复不符),或者使用与VB.NET兼容的新的第三方应用程序生成RSA密钥。感谢您的答复。