我已经研究了一些关于如何实现我在问题中所说的内容并发现了几个API,但大多数API看起来非常复杂,因为我只是在这方面的一个noobie我只想要一个简单的方法,如:
public String Encrypt(String message, PublicKey publicKey)
Run Code Online (Sandbox Code Playgroud)
不知道是否可以这样做?如果没有那么请有人开导我另一种方式来实现这个:)
谢谢.
更新:
到目前为止,我只看到OpenPGP加密的所有库都需要公钥和私钥才能进行加密,而我只想用公钥加密(因为我没有私钥来使用它) !
我想用python加密一些文件,哪种方法可以使用gpg/pgp使用任何标准/着名的python库?
我有一个使用Bouncy Castle进行PGP解密的应用程序,在过去的8个月左右没有任何问题,过去2天突然出现了GetDataStream方法引发异常的问题:
异常消息:"错误设置非对称密码".
内部异常消息:"不是RSA密钥".
private static PgpObjectFactory getClearDataStream(PgpPrivateKey privateKey, PgpPublicKeyEncryptedData publicKeyED)
{
// Exception throws here.
Stream clearStream = publicKeyED.GetDataStream(privateKey);
PgpObjectFactory clearFactory = new PgpObjectFactory(clearStream);
return clearFactory;
}
Run Code Online (Sandbox Code Playgroud)
密钥尚未过期,没有到期日期:

我没有对应用程序进行任何更改,我没有触及按键,所以我不太明白为什么一个问题突然出现了.有任何想法吗?我也可以使用我在应用程序中加载的相同密钥使用Kleopatra手动解密文件.
更新1 - 我下载了OpenPGP Library for .NET的免费试用版,它也希望使用BouncyCastle,我也没有问题使用相同的密钥解密文件.出于某种原因,我使用已经工作了几个月的BouncyCastle实现的解密由于某种原因而停止工作,我还无法识别.
更新2 - 我上周提取的文件有效,我还下载了BouncyCastle的源代码,以便我可以单步调试以查看异常抛出的位置以及变量在工作和一个不起作用的文件.在PgpPublicKeyEncryptedData类的GetDataStream方法的开头抛出异常:
byte[] plain = fetchSymmetricKeyData(privKey);
Run Code Online (Sandbox Code Playgroud)
当我进入这个方法时,对于我可以解密而没有任何问题的文件,我注意到keyData.Algorithm变量设置为"ElGamalEncrypt",而对于异常抛出的文件,文件keyData.Algortithm设置为"RsaGeneral".为什么这些不同?公司向我发送文件是否更改了加密方法?BouncyCastle是否未正确支持此加密方法?
private byte[] fetchSymmetricKeyData(PgpPrivateKey privKey)
{
IBufferedCipher c1 = GetKeyCipher(keyData.Algorithm);
try
{
c1.Init(false, privKey.Key);
}
catch (InvalidKeyException e)
{
throw new PgpException("error setting asymmetric cipher", e);
}
Run Code Online (Sandbox Code Playgroud)
此外,不确定这是否相关,我们的密钥的证书类型是DSA.

更新3 - 在给定当前密钥的情况下,我一直无法弄清楚如何解决问题.我昨天生成了新密钥(类型为DSA),并且使用新密钥解决了问题.
更新4 - 这个问题刚刚出现,我的上一次更新中使用了新密钥.现在,PgpPublicKeyEncryptedData类中的keyData.Algorithm再次被看作"RsaGeneral"而不是"ElGamalEncrypt".为什么Algorithm属性会改变?加密文件的人是在改变什么吗?
我正在尝试在我的CentOS 6.6机器上安装Ruby版本管理器(RVM).
我按照主页https://rvm.io/rvm/install上的说明进行操作
当我运行此命令时:
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
Run Code Online (Sandbox Code Playgroud)
我一直收到错误:
gpg: requesting key D39DC0E3 from hkp server keys.gnupg.net
gpgkeys: HTTP fetch error 6: Couldn't resolve host 'keys.gnupg.net'
gpg: no valid OpenPGP data found.
gpg: Total number processed: 0
Run Code Online (Sandbox Code Playgroud)
有谁知道如何解决这个问题?
谢谢你
我安装了Git for Windows,包括Windows 10和Gpg4win上的Git Bash.默认情况下,我必须将我通过Kleopatra创建的所有密钥重新导入到Git Bash中内置的GPG版本中,并且它不允许我设置代理.我需要做的是自动唱歌,这样我不需要每次都输入密码,而只是在给定的时间段内第一次输入密码.怎么可能?
我尝试按照本教程,但gpg2在Git Bash中执行时不使用正确的字符集,因此它无法识别包含非ASCII字符的键.
有什么方法可以解决这个问题吗?在Windows上使用GGP与Git签名的最佳方法是什么?
我真的很挣扎,我需要在C#中使用BouncyCastle加密和解密字符串.我确实试过自己做这件事.我确实创建了自己的密钥(私有和公共密钥).
请记住,我刚从大学毕业.
我想知道数据加密和解密如何在PGP中工作.作为加密的一部分,"gpg --gen-key"用于生成密钥,而且我有一个公钥,但是我不知道如何获取私钥.它存储在特定位置吗?是否有任何生成命令?我没有任何线索.
我未遵循的文档中未指定此内容.
我有一小段一些数据(小于1kb),我希望用户代理从我的网站发送到其他网站.为了让其他站点验证我是创建字符串的那个,我有两个选项.
我不想设置HMAC,因为这意味着我必须为每个站点使用自定义键,这将是一个痛苦.
在这两个选择中,似乎#2会节省带宽,这使它看起来是更好的选择.
那么如何使用PHP设置公钥/私钥加密,是否有任何缺点?
我有一个需要存储服务器登录信息的Web应用程序.我正在使用2048位PGP公钥来加密插入的密码(请参阅参考资料insertServerDef)和带密码的私钥来解密密码(请参阅参考资料getServerDef).
据我所知,这个链中最薄弱的环节是处理私钥和密码.从下面的代码中我可以看到,我只是file_get_contents用来从当前web目录中的文件中检索密钥和密码 - 不好.
我的问题是:安全检索私钥和密码用于解密登录信息的好方法是什么?也许我应该通过经过身份验证的远程文件服务器存储/检索私钥?
我搜索过最佳实践,但却找不到多少.
class DB {
protected $_config;
protected $_iUserId;
protected $_iServerId;
protected $_dbConn;
protected $_sPubKey;
protected $_sPrivKey;
public function __construct($iUserId, $iServerId) {
//bring the global config array into local scope
global $config;
$this->_config = $config;
$this->_iUserId = $iUserId;
$this->_iServerId = $iServerId;
$this->_sPubKey = file_get_contents("public_key");
$this->_sPrivKey = file_get_contents("private_key");
$this->_sPrivKeyPass = trim(file_get_contents("private_key_pass"));
}
//connect to the database
public function connect() {
try {
$this->_dbConn = new PDO("pgsql:host=".$this->_config['db_host']." dbname=".$this->_config['db_name'],$this->_config['db_username'],$this->_config['db_password']);
echo "PDO connection object …Run Code Online (Sandbox Code Playgroud) 我看过很多帖子,其中有很多教程,但似乎都没有.有时,他们会引用一些未找到的类.我是否可以指向一个可以获得简单教程的地方,该教程展示了如何加密和解密文件.
我对Pgp很新,欢迎任何帮助.
pgp ×10
encryption ×5
c# ×4
bouncycastle ×2
gnupg ×2
php ×2
bash ×1
centos6 ×1
cryptography ×1
git ×1
libsodium ×1
pdo ×1
php-openssl ×1
postgresql ×1
public-key ×1
python ×1
ruby ×1
rvm ×1
security ×1