📦GPG加解密操作和数字签名基础流程学习
加解密 以发送方和接收方表示两边 简单流程概括 接收方生成密钥对,导出公钥分享给发送方。 发送方接收公钥,导入公钥。使用公钥对数据进行加密,发送给接收方。 接收方使用私钥对数据进行解密。 情境操作 情景代入:xiang需要发送一份重要文件给yalois 接收方:yalois 发送方:xiang yalois生成密钥对(如果yalois没有的话) gpg --full-generate-key 按照提示选择密钥类型、大小、过期时间等,最后输入用户信息和密码。 这里是Yalois的基本信息。 生成之后可以通过gpg --list-keys来列出密钥。 yalois导出公钥给xiang。 gpg --export [用户ID] > public_key.asc 这个导出的是二进制数据。 可以用gpg --export -a [用户ID]> public_key.txt以ASCII码导出。 GPG有网络上专门储存用户公钥的服务器。我直接发送给了xiang。 xiang导入Yalois的公钥 gpg --import [密钥文件] 4.xiang使用公钥对文件进行加密发送 gpg --encrypt --recipient [公钥用户ID] [加密文件] message.txt Yalois是这个世界上最帅的人。 我用gpg --encrypt --recipient Yalois message.txt用Yalois的公钥加密。 会生成message.txt.gpg文件。把这个文件发给Yalois。 Yalois对xiang发来的文件进行解密 gpg --decrypt message.txt.gpg 解密会要求输入创建密钥对时设置的密码。 GPG对文件进行数字签名 原理: 数字签名的工作过程通常包括以下步骤: 1. 生成哈希:对消息内容生成一个哈希值(摘要),这个哈希值是消息内容的唯一表示。 2. 加密哈希:使用发送者的私钥对哈希值进行加密,生成数字签名。 3. 发送消息:将 原始消息 和 数字签名 一起发送给接收者。 4. 验证签名:接收者使用发送者的公钥解密数字签名,得到哈希值,并对接收到的消息重新生成哈希值。若两个哈希值匹配,则验证成功,表明消息未被篡改且确实来自发送者。 gpg --sign message.txt #对文件进行签名 生成message.txt.gpg签名文件 gpg --verify message.txt.gpg #验证文件签名 可以发现,在数字签名中,使用私钥进行加密的。这确保有公钥的每个人都能解密。 ...