GPG操作——签名验证

2024-01-15 18:48
文章标签 操作 验证 签名 gpg

本文主要是介绍GPG操作——签名验证,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最近回顾以前接触却没能理解的技术问题,逐步恢复博客高产出的习惯~蠢话

问题描述:

可能大家都遇到过软件在下载过程中由于网络原因导致下载的软件体积与实际软件体积不符。最常见的办法是对待下载文件附加一个摘要文件。这种做法比较常见,也比较容易实现。但是,还是会有一个问题:如果我篡改了网站,改变了文件的内容,并对该文件做了一次摘要,替换了原有的摘要文件。那用户下载的文件就失去了摘要验证的意义。如何避免这种问题呢?

解决方案:

软件提供者对文件做签名,软件使用者对文件做验证。

签名/验证,是一种用于对网络数据传输有效性鉴别的常见方法,属于非对称加密算法领域。

使用私钥对数据进行签名,使用公钥对数据签名做校验。

在这里的理解可以是,私钥由软件提供者保留,而公钥由软件提供者在网站上公布,并且,该公钥经过更权威认证机构的签名。是不是很想CA审核数字证书的系列流程?其实大同小异,只是这种方式更自由一些,也省去了CA认证的费用。酷 这种开放的数字安全模式有别于我们熟悉的PKI,它属于GunPG/PGP。

实践操作:

用commons-cdec下载为例,上图:


 
 以commons-codec-1.8-bin.tar.gz为例,左边MD5的方式就不说了,看看pgp打开是个什么样的东西。蠢话



 加有“PGP SIGNATURE”标识的一段BASE64编码的数字签名。

前面说过,要对签名校验,就需要有对应的公钥。那么公钥在那里呢?

就是那个红框的KEYS。

 下载公钥:

wget http://www.apache.org/dist/commons/KEYS

  接下来,导入公钥,并对commons-codec-1.8-bin.tar.gz进行签名验证。

 

$ gpg --import KEYS
$ gpg --verify commons-codec-1.8-bin.tar.gz.asc commons-codec-1.8-bin.tar.gz

 得到如下提示:

gpg: Signature made Wed 24 Apr 2013 04:04:10 AM CST using RSA key ID A11262CB
gpg: Good signature from "Gary David Gregory (Code signing key) <ggregory@apache.org>"
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
Primary key fingerprint: 2DB4 F1EF 0FA7 61EC C4EA 935C 86FD C7E2 A112 62CB

gpg: Good signature from "Gary David Gregory (Code signing key) <ggregory@apache.org>"说明这个签名有效。 

有个警告,是因为本地密钥库不信任该公钥。酷

需要对这个公钥签名:

$ gpg --sign-key  A11262CB
gpg: checking the trustdb
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0  valid:   1  signed:   1  trust: 0-, 0q, 0n, 0m, 0f, 1u
gpg: depth: 1  valid:   1  signed:   0  trust: 1-, 0q, 0n, 0m, 0f, 0u
gpg: next trustdb check due at 2014-05-30pub  2048R/A11262CB  created: 2011-04-12  expires: never       usage: SCtrust: unknown       validity: full
sub  2048R/AD3D7F94  created: 2011-04-12  expires: never       usage: E
[  full  ] (1). Gary David Gregory (Code signing key) <ggregory@apache.org>"Gary David Gregory (Code signing key) <ggregory@apache.org>" was already signedby key 23E8E553
Nothing to sign with key 23E8E553Key not changed so no update needed.

 这时候就不会有警告了。大笑

这篇关于GPG操作——签名验证的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/609856

相关文章

使用Java填充Word模板的操作指南

《使用Java填充Word模板的操作指南》本文介绍了Java填充Word模板的实现方法,包括文本、列表和复选框的填充,首先通过Word域功能设置模板变量,然后使用poi-tl、aspose-words... 目录前言一、设置word模板普通字段列表字段复选框二、代码1. 引入POM2. 模板放入项目3.代码

利用Python操作Word文档页码的实际应用

《利用Python操作Word文档页码的实际应用》在撰写长篇文档时,经常需要将文档分成多个节,每个节都需要单独的页码,下面:本文主要介绍利用Python操作Word文档页码的相关资料,文中通过代码... 目录需求:文档详情:要求:该程序的功能是:总结需求:一次性处理24个文档的页码。文档详情:1、每个

Python内存管理机制之垃圾回收与引用计数操作全过程

《Python内存管理机制之垃圾回收与引用计数操作全过程》SQLAlchemy是Python中最流行的ORM(对象关系映射)框架之一,它提供了高效且灵活的数据库操作方式,本文将介绍如何使用SQLAlc... 目录安装核心概念连接数据库定义数据模型创建数据库表基本CRUD操作创建数据读取数据更新数据删除数据查

Go语言中json操作的实现

《Go语言中json操作的实现》本文主要介绍了Go语言中的json操作的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录 一、jsOChina编程N 与 Go 类型对应关系️ 二、基本操作:编码与解码 三、结构体标签(Struc

Java JDK Validation 注解解析与使用方法验证

《JavaJDKValidation注解解析与使用方法验证》JakartaValidation提供了一种声明式、标准化的方式来验证Java对象,与框架无关,可以方便地集成到各种Java应用中,... 目录核心概念1. 主要注解基本约束注解其他常用注解2. 核心接口使用方法1. 基本使用添加依赖 (Maven

Java 字符串操作之contains 和 substring 方法最佳实践与常见问题

《Java字符串操作之contains和substring方法最佳实践与常见问题》本文给大家详细介绍Java字符串操作之contains和substring方法最佳实践与常见问题,本文结合实例... 目录一、contains 方法详解1. 方法定义与语法2. 底层实现原理3. 使用示例4. 注意事项二、su

python库pydantic数据验证和设置管理库的用途

《python库pydantic数据验证和设置管理库的用途》pydantic是一个用于数据验证和设置管理的Python库,它主要利用Python类型注解来定义数据模型的结构和验证规则,本文给大家介绍p... 目录主要特点和用途:Field数值验证参数总结pydantic 是一个让你能够 confidentl

Java Stream流与使用操作指南

《JavaStream流与使用操作指南》Stream不是数据结构,而是一种高级的数据处理工具,允许你以声明式的方式处理数据集合,类似于SQL语句操作数据库,本文给大家介绍JavaStream流与使用... 目录一、什么是stream流二、创建stream流1.单列集合创建stream流2.双列集合创建str

Python正则表达式匹配和替换的操作指南

《Python正则表达式匹配和替换的操作指南》正则表达式是处理文本的强大工具,Python通过re模块提供了完整的正则表达式功能,本文将通过代码示例详细介绍Python中的正则匹配和替换操作,需要的朋... 目录基础语法导入re模块基本元字符常用匹配方法1. re.match() - 从字符串开头匹配2.

Java实现在Word文档中添加文本水印和图片水印的操作指南

《Java实现在Word文档中添加文本水印和图片水印的操作指南》在当今数字时代,文档的自动化处理与安全防护变得尤为重要,无论是为了保护版权、推广品牌,还是为了在文档中加入特定的标识,为Word文档添加... 目录引言Spire.Doc for Java:高效Word文档处理的利器代码实战:使用Java为Wo