Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php gpg(github存储库)使用1个子密钥加密PGP消息,但不使用2个子密钥?_Php_Gnupg - Fatal编程技术网

php gpg(github存储库)使用1个子密钥加密PGP消息,但不使用2个子密钥?

php gpg(github存储库)使用1个子密钥加密PGP消息,但不使用2个子密钥?,php,gnupg,Php,Gnupg,我试图让php gpg库从中工作; 如果我尝试使用具有2个子密钥的PGP公钥加密消息,则会出现以下两个错误 gpg:公钥解密失败:使用了错误的密钥gpg: 解密失败:密钥不可用 但是,如果我删除其中一个子键,并且只使用一个子键,它就会工作。如何让它与2个子键一起工作 同样,一旦我解密了一个用一个子密钥的PGP公钥加密的消息,我会得到以下错误 gpg警告消息未受完整性保护 是否有人有使用此库的经验以及如何解决这些问题? 不幸的是,作者不喜欢回答关于他自己作品的问题。我认为在Public_Key.

我试图让php gpg库从中工作;

如果我尝试使用具有2个子密钥的PGP公钥加密消息,则会出现以下两个错误

gpg:公钥解密失败:使用了错误的密钥gpg: 解密失败:密钥不可用

但是,如果我删除其中一个子键,并且只使用一个子键,它就会工作。如何让它与2个子键一起工作

同样,一旦我解密了一个用一个子密钥的PGP公钥加密的消息,我会得到以下错误

gpg警告消息未受完整性保护

是否有人有使用此库的经验以及如何解决这些问题?
不幸的是,作者不喜欢回答关于他自己作品的问题。

我认为在
Public_Key.php
中有一个错误,导致一些指纹被错误地计算出来

您可能正在使用所属文件的版本。该版本包含一项更改,旨在解决为使用新数据包格式(中定义)的密钥计算公钥指纹的问题

我针对一个类似的问题调试了这段代码,发现当前的修复引入了一个假设,即公钥只包含一个键(并且没有子键)。当公钥文件包含一些子密钥时,将返回最后一个子密钥,但带有主密钥的指纹。这会导致公钥不正确,并导致无法解密使用此损坏密钥加密的所有数据

我认为此版本的快速修复方法是:

1)取消注释行#143-使库计算所有子键的正确指纹

2)将第90行更改为:

if($len>191&$len<224)$len=($len-192)191&$len<224)$len=($len-192)
if ($len > 191 && $len < 224) $len = (($len - 192) << 8) + ord($sa[$i++]);
if ($len > 191 && $len < 224) $len = (($len - 192) << 8) + ord($sa[$i++]) + 192;