使用GPG进行数据加密

这篇博客因为涉及的信息量太大、知识面太广,于是准备了许久时间。 概念 首先,提出几个概念: 什么是密钥?什么是公钥? 什么是私钥? 什么是数字签名和密钥指纹? 密钥,顾名思义,解密的钥匙。 使用GPG加密的文件(如果你是使用密钥加密的话)必须用密钥才能解密出来,以区别于常规的密码。 既然有了密钥的概念,那么就来讲一下私钥和公钥。 公钥(Public Key)与 私钥 (Private Key)是通过一种算法得到的一个 密钥 对(即一个公钥和一个私钥),公钥是密钥对中公开的部分,私钥则是非公开的部分。公钥通常用于加密会话 密钥 、验证 数字签名 ,或加密可以用相应的 私钥 解密的数据。通过这种算法得到的 密钥 对能保证在世界范围内是唯一的。使用这个 密钥 对的时候,如果用其中一个 密钥加密 一段数据,必须用另一个密钥解密。比如用 公钥加密 数据就必须用 私钥 解密,如果用私钥加密也必须用公钥解密,否则解密将不会成功。 上文引自百度百科 简单来说,公钥是用来加密数据的,被此公钥加密的数据只能用相对应的私钥才能解密。 再来解释一下数字签名。数字签名,就是只有信息的发送者才能产生的别人无法伪造的一段数字串(SHA1是可以被伪造的,详见上一篇文章),这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明(因为数字签名是使用数据的发送方的私钥对数据进行校验和其他与数据内容有关的变量进行加密处理)。 而密钥指纹则是用于标识较长公共密钥字节的短序列,旨在标识此密钥,可以方便密钥的管理。但是密钥指纹并不是安全的,详见以下: 公钥指纹主要的安全威胁是 原像攻击 ,攻击者构造一个密钥对,与受害者可生成的指纹相匹配,即可能伪装成受害者;某些系统的第二个威胁是 碰撞攻击 ,这可能允许攻击者否认他所创造的签...