我想我知道基本知识:
但这还不足以实现这一点。例如,使用了什么加密算法以及如何实现?
在给定消息和相关密钥的情况下,在.NET中编写可通过的pgp加密/解密库有多难?
我在哪里可以找到标准算法?
答案 0 :(得分:2)
答案 1 :(得分:2)
OpenPGP在RFC 4880中定义。
这是一个高级协议,使用broad variety of cryptographic algorithms,有些是强制性的(3DES,DSA,Elgamal,SHA-1),其他也应该实现(RSA,AES,SHA-2,压缩) ,...)。特别建议 not 自己实现这些基本算法以防止大量的侧通道和定时攻击,而是依赖现有的加密库(GnuTLS,OpenSSL)。
如果要基于这些现有算法实现OpenPGP消息格式,请务必阅读Security Considerations和Implementation Nits 章节,其中包含有关可能需要考虑的攻击和兼容性问题的重要信息。
如果您的主要目标是了解OpenPGP和密码术,我建议您研究BouncyCastle(已经有C#和Java实现),GnuPG(可能是OpenPGP)具有最大用户群的实现,并且随附几乎所有Linux发行版,但也适用于Windows)或OpenPGP.go library(写得很好,go)。所有这些都是开源的,并且可能在他们的错误跟踪器中解决有趣的问题(BouncyCastle,GnuPG)。