OpenPGP определен в RFC 4880.
Это протокол высокого уровня, который использует broad variety of cryptographic algorithms, некоторые из них являются обязательными (3DES, DSA, Elgamal, SHA-1), другие также должны быть реализованы (RSA, AES, SHA-2, сжатие, .. .). Особенно рекомендуется использовать , а не, чтобы реализовать эти основные алгоритмы самостоятельно, чтобы предотвратить широкое количество побочных каналов и временных атак, вместо этого полагаться на легко существующие библиотеки криптографии (GnuTLS, OpenSSL).
Если вы хотите реализовать формат сообщений OpenPGP на основе существующих алгоритмов, обязательно прочитайте главы Security Considerations и Implementation Nits , в которых содержится важная информация о возможных атаках для рассмотрения и проблем совместимости.
Если ваша главная цель изучения OpenPGP и криптографии в целом, я бы рекомендовал смотреть в BouncyCastle (который уже есть C# и реализацию Java), GnuPG (который, вероятно, является реализация OpenPGP с самой большой базой пользователей, и корабли с почти каждым дистрибутивом Linux, но также доступны для Windows) или OpenPGP.go library (написано хорошо, идите). Все они с открытым исходным кодом и, вероятно, имеют интересные проблемы для решения в своих трекерах ошибок (BouncyCastle, GnuPG).