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