我正在为某些系统生成更新,我想加密更新以保持我的签名的机密性,完整性和有效性.我想用我的私钥加密文件并将它们发送到我的客户端,以便他们可以使用我的公钥解密它.但GPG的工作方式是使用public进行加密,使用private进行解密.我不想发送我的私钥,以便我可以更改它并将公钥发送给其他任何人.知道如何做到这一点???
解决方法
你的意思不是称为“加密”,而是在gpg术语中“签名”.
签名基本上是使用您的私钥加密并使用公钥解密.
使用
gpg --sign myfile.ext
签名显然将允许任何有权访问您的“公共”密钥的人阅读您的文件内容(并且由于“公共”密钥通常,嗯……,公开,这将允许每个人对内容进行decypher).
如果您正在寻找只有收件人可以解码内容的方法,那么您需要以只有收件人才能访问解密令牌的方式加密数据.很明显,收件人需要有这样一个令牌(即:你用他们的公钥编码,所以他们可以使用他们的私钥解码)
UPDATE
为简单起见:如果您想保证完整性(即:收件人确切知道,数据来自您和其他人),您需要签署数据.
如果要保证机密性(即:只有您的收件人可以读取数据),您需要加密数据.
签名和加密都是一回事.
唯一的区别是,谁有权访问密钥.
通过签名,您可以使用私钥加密数据,并使用您的公钥解密(因为每个人都可以访问公钥,所以每个人都可以解密它,因此每个人都可以验证数据是否已由您)
通过加密,您可以使用收件人公钥来加密数据,并使用私钥对其进行解密(因此只有他们可以读取它;但是每个人都可以向他们发送加密数据,但他们无法保证它真正来自于发件人,但保证只有他们可以阅读它).
如果您需要机密性和完整性,则需要同时进行签名和加密,为此,您和收件人都需要拥有(不同的)公钥/私钥对.
结论
由于签名和加密都是相同的,因此只要您完全控制所涉及的密钥的可用性,您就可以使用它们来保证数据的有效性和完整性.