ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

如何使用C#加密OpenPGP密钥?

2019-11-19 10:07:18  阅读:458  来源: 互联网

标签:cryptography rsa pgp openpgp c


我的任务是添加一个系统,该系统允许我的公司对文件进行加密,以便我们可以将其发送给第三方,并且它们可以对我们的数据执行某些操作.第三方以这种格式给了我一个公共密钥,

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v2.0.18 (Darwin)

mQGiBFU1gfQRBACekfIt7mSynzBi0C2hIbvWM6mMh80ypw8NNvdCpOIfSwLVavej
YIESXe5yLGzWUoTnHALa5JHLJ2C3faeDHRBikXRESycRHz0itz3L/mlyIPLo7T1n
4zr2wUL+h0ZEmuhLeVBD+yLKzy68suEWXCcTkeh71vYG1r77RFJLtQHIfwCgu9DW
uJC8IHzXMrspotFIb0XF/VsD/iqdfRgdu7CkvUflwQsT66CmZcyfkkZkWpHXZoov
GP3ZCVKPfGEZqlThwuqgBCBbtsyZFSSmF8m5qjL/Dtz+t3/fxxTo1lXRr9P4f4Pl
n3OYQh+iOs1Z+7nnAZ4mulU1eRPYUY21e+UwKi+hd1Qe1ADOaH/9JVS8nrodePCO
qBFvBACXKEWpP937fZv1hGdqZ2OUM44RIf0PGbQwyG8a+DsksJgd0oY+sb5nTaB/
CgsEFgIDAQIeAQIXgAAKCRDEcHC8uF0CrVnTAJwLdvuBjv/Z8lySVZS7jInljU9y
sACdEtxmspV/GH7EDY0KtIydy3Vn8/eIXgQQEQgABgUCVTWCPAAKCRArjD/JWo9s
KvwNAP9CkZgMGn98wwMAixW5tIVA+J5kvdxnleg/wrR9xHsFYQD+KMraOkHSk10p
1EckgFK6LTuVqMvUoK9Gvr8v0rrHucW5Ag0EVTWB9BAIAP12dtlu0EuQ4s78ZWhM
cDJmpqot5FbMecPF20V5LsDFYbLGylEPPFFxNhwsc/l0Rlvg7auH2fcLSZf5hEp9
NsBhgWD532CAim9bFYF1s2bbjlZ7jUQD/Dt+9j1d9YrgCkF2/9er7RyfYwsRlVDQ
1nRCFLoQWLqisoILG65oloVtjNg6xftyLaLb6UuluW8dRM7q/9EvE0xPAX1ukc33
iGDWeMUR0JHyuM1QiN4IhOHKjP6Oqy+lJWtgoCQmxPJ2+Qj6b34wtsfD9vh3xLef
68ReXEOlfQ01tv6hQCrK/ZdvPLk38kVnwPOEJl/Hgj5eiVM3ioOlmBQoXKSpXyXI
wMKnovOEqJ2btp39XNpjjcV80RZiAJyAhNz2EynZk15QhOnabo9gdsiaMpBZdSdc
gDHowOXsWxzaVESs+SwJf/N2fa3j1UTDxCKkq5TOofvOfyPAYYASstmPw1v7xIcV
zn2nkKfBk1EnFM5PfwQAfXKUTx6BrZmITwQYEQgADwUCVTWB9AIbDAUJAsfqAAAK
CRDEcHC8uF0CrTI6AJ4oAZ2y4Pcahp+SRSNSW7Nijqdv2QCgnJ2EauQgU+rSyHyy
lkp3zJGdJTU=
=k/9l

-----END PGP PUBLIC KEY BLOCK-----

我可以将此文本字符串直接粘贴到C#中的RSACryptoServiceProvider类中作为公钥吗?还是还有更多呢?我以前从未使用过PGP,并且试图了解要使用此密钥加密的数据需要做什么.

解决方法:

尽管OpenPGP利用RSA和其他标准算法,但是您不能使用默认的C#RSACryptoServiceProvider. RSA只是OpenPGP的一种可能算法,此外,您还需要一些对称加密算法,例如AES(也可以使用).但是还存在其他问题:您需要为OpenPGP message formatOpenPGP defined its own cipher mode实现一个生成器.独自实现所有这些不仅会带来不兼容性(an incomplete list exists in the RFC)的麻烦,而且还有很多方法可以包含security issues(和已经提出了许多其他有趣的攻击,并通过现有的实现方式(如GnuPG)加以缓解.

如果要使用C#的OpenPGP,最后将其归结为以下替代方法:

> use GnuPG through GPGME(但包装器似乎仍处于Alpha状态),
>使用BouncyCastle,它具有多种加密协议的本地实现,包括适用于C#和Java的OpenPGP,但是C#实现的普及程度较低,并且功能不那么强大,
> SharpPrivacy是另一个实现,但似乎已死
>直接连接GnuPG命令行

所有这些都有优点和缺点. BouncyCastle可能是最好的方法,如果它不支持必需的功能,则可能必须在命令行上放弃调用命令GnuPG.

标签:cryptography,rsa,pgp,openpgp,c
来源: https://codeday.me/bug/20191119/2035232.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有