位置: 编程技术 - 正文

Linux系统中校验下载文件的完整性方法(MD5,SHA1,PGP) (linux校验文件)

编辑:rootadmin

推荐整理分享Linux系统中校验下载文件的完整性方法(MD5,SHA1,PGP) (linux校验文件),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:linux系统校验md5,linux测验,linux校验文件,linux校验文件,linux sha256校验,linux系统校验md5,linux sha256校验,linux sha1校验,内容如对您有帮助,希望把文章链接给更多的朋友!

Linux下的学习开始总是艰难的,但有的时候,却发现Linux下远比Windows的操作来的实在的多——这下载文件的完整性就是其中一件,让本人觉着很爽的一件事情。在编译安装各种软件的时候,总要到各个网站上收集下软件源码包。正由于此,软件的入口就非常复杂,校验下载的文件是否被修改过就显得非常有必要了。而校验方法当前一般是MD5,SHA1,PGP三种。在Windows那个漫长的岁月里(沧桑有木有),一般只能接触到前两种——前提是你会去校验的话。

MD5校验

原理:对文件进行MD5 Hash,求出文件的MD5哈希值,通过下载后文件MD5哈希值和发布者提供的MD5哈希值是否一致来判断文件是否在发布者发布之后被篡改过。说明:寿命老长的一个Hash算法,适用范围广,网站存储密码也经常使用。不同的文件产生的MD5哈希值是唯一的,但这点已经有办法通过对文件进行少量的修改,让文件的MD5后的哈希值保持一致。使用:在CentOS下,要对文件进行MD5 Hash是很简单的,一个 md5sum 命令即可:

复制代码代码如下:# $是终端提示符,非输入.# #号是注释# 没有提示符的是输出#直接输出MD5 Hash$ md5sum your-downloaded-file-namefd4a1bccceb7acd8 your-downloaded-file-name</p><p>#将MD5 Hash值保存到md5-hash.txt文件中.$ md5sum your-downloaded-file-name > md5-hash.txt# 显示输出的md5-hast.txt内容$ cat md5-hash.txtfd4a1bccceb7acd8 your-downloaded-file-name</p><p># 通过md5-hash.txt来校验你下载的文件是否正确$ md5sum -c md5-hash.txtyour-downloaded-file-name: OK

你是文件的发布者话,你可以通过md5sum把文件的哈希值发送给验证者,这样下载你文件的人就可以通过MD5哈希值来验证你的文件正确性。反过来,我们在网站上下载文件之后,同时可以获取发布者的MD5哈希值和本地生成的Hash值对比,如果一致,认为文件是正确的。

SHA1校验

原理: 原理同MD5一样,都是通过对文件进行HASH求值,比对文件发布者发布的HASH值,通过是否相等判断文件是否被篡改说明: SHA1 HASH求值方法可以说是MD5的一个升级版本(SHA1 位,MD5 位),在HASH求值方面,MD5退出的舞台将有SHA1占据。SHA家族有五个算法:SHA-1、SHA-、SHA-、SHA-,和SHA-,后四种有时候称为SHA2使用: CentOS有SHA1的命令: sha1sum

复制代码代码如下:# 说明同上# 直接输出SHA1 Hash$ sha1sum your-downloaded-file-namedccbdccfa your-downloaded-file-name</p><p># 将SHA1 Hash值保存到文件中$ sha1sum your-downloaded-file-name > sha1-hash.txt# 显示文件内容$ cat sha1-hash.txtdccbdccfa your-downloaded-file-name</p><p>#通过sha1-hash.txt来校验我们下载的文件your-downloaded-file-name# 注意,文件必须要要通过txt文件中的路径知道哦$ sha1sum -c sha1-hash.txtyour-downloaded-file-name: OK

这个SHA1和MD5基本一致,需要补充说明下的是,在使用 md5sum 也好,还是 sha1sum 也罢,校验文件的时候,务必要让系统能够根据文件中提供的路径找到文件,如果文件找不到,是没有办法进行校验的。

如果是做多个文件的Hash校验,可以通过一个文件保存多个文件的Hash值即可。

PGP校验

原理:使用非对称加密,程序生成唯一的密钥对(公钥和私钥:Public Key和Private Key/Secret Key)。操作方法如下:

1.发布者通过用生成的密钥对中的私钥对要发布的文件进行签名,得到签名文件(sign);2.发布者将密钥对中的公钥发布到公钥服务器;3.发布者将文件和用私钥生成的签名一起发布;4.验证者下载发布者发布的文件和签名;5.使用PGP的程序获取的发布者第二步发布的公钥;6.使用公钥校验文件签名说明:签名算法中,密钥的用处分别是:公钥用于加密信息和验证,私钥用于解密和签名。私钥掌握在信息发布方,公钥可以任意分发。信息发布方用密钥进行对信息进行签名,接收方在获取公钥后,可以用公钥对发布方发布的信息+签名进行验证。如果验证失败则认为信息被篡改。在网络中,我们经常碰到的HTTPS协议,使用了同样的机制。

使用:由于PGP是商业应用程序,在CentOS/Linux中,具有同类功能的是GPG(也就是:GnuPG),同样遵守OpenPGP数据加密标准( RFC ),没有安装可以用 yum install gnupg 安装,命令是: gpg

Linux系统中校验下载文件的完整性方法(MD5,SHA1,PGP) (linux校验文件)

复制代码代码如下:# 说明同上# 由于过程相对复杂,并且在实际使用中,校验用的比较多,因此这里只介绍文件的校验过程。# 在获得文件和签名时,我们先用gpg校验签名,此时文件必须存在$ gpg --verify downloaded-file-sign.asc

这里有多种情况,如果你只有签名,但生成签名的文件不存在时(系统没找到,一般应该放在同目录下面),返回的是:

复制代码代码如下:gpg: 不含签名的数据gpg: can't hash datafile: No data

当你有文件的时候,但还没有与签名对应的公钥时,gpg返回的信息类似下面:

复制代码代码如下:gpg: 于 年月日 星期一 时分秒 CST 创建的签名,使用 RSA,钥匙号 ACDAFBgpg: 无法检查签名:No public key

注意:上面的信息在不同的文件和操作系统上生成的信息是不同的。但在没有公钥的时候,你可以发现gpg提供了一个该签名对应的钥匙号:ACDAFB,这个是我们需要找的公钥。

上面已经说过,发布者已经将公钥发布到公钥服务器中,供验证者下载,因此我们需要到公钥服务器中下载公钥,要下载公钥,钥匙号就很重要了。

可用的公钥服务器可以通过wikipedia 上的Key Server条目来查看常用的一些key服务器列表。这里使用 获取服务器上的public key$ gpg --keyserver --recv-keys ACDAFBgpg: 下载密钥‘ACDAFB’,从 hkp 服务器 pgp.mit.edugpg: 密钥 ACDAFB:公钥“Stephan Mueller <Stephan.Mueller@atsec.com>”已导入gpg: 没有找到任何绝对信任的密钥gpg: 合计被处理的数量:1gpg: 已导入:1

--recv-keys要与--keyserver配合使用,导入密钥对的公钥之后,我们就能够使用这个公钥来验证我们的签名了。

再次运行我们之前的验证命令(gpg --verify sign-file),就可以看到验证的结果了。

复制代码代码如下:#这时候我们再次验证我们的签名,就能得到验证结果了$ gpg --verify downloaded-file-sign.ascgpg: 于 年月日 星期一 时分秒 CST 创建的签名,使用 RSA,钥匙号 ACDAFBgpg: 完好的签名,来自于“Stephan Mueller <Stephan.Mueller@atsec.com>”gpg: 警告:这把密钥未经受信任的签名认证!gpg: 没有证据表明这个签名属于它所声称的持有者。主钥指纹: B0F4 2D F8 F6F5 D4 A A1C0 F8

看到这个结果,至少确认一个结果:这个文件是没有被篡改过的。

一般我们到这步也就差不多了。

但注意消息里面有个警告,说明这个是未受信任的签名认证。因为这个公钥谁都可以发布上去的,如果你确实需要进一步认证,可以在签名认证之前,你能还要联系下真正的发布者,确认这个密钥的信息——指纹!这个是这个算法的一个弱点。

如果签名认证已经通过,你也就可以安心的在自己的系统内编译,安装它了。

关于PGP的更多信息,可以参考以下网站:

wikipedia PGP ubuntu GPG/PGP GnuPG ,HOWTOs中MiniHOWTO中有个zh的文档,是中文的 gentoo GnuPG

linux wget下载进度条变成多行显示的解决方法 在之前为了解决Putty客户端连接到CentOS之后显示乱码的问题,设置了LANG=zh_CN.UTF-8之后,在使用wget下载的时候,wget下载进度条异常,竟然不能在一行显示

Linux系统中vim工具常用命令大全 在linux下做开发,甚至是只做管理维护工作,也少不了Vim的使用。作为一个新手,我也是刚刚接触,本节将我日常使用或收集的Vim常用命令记录下来。当

linux磁盘分区详解 在学习Linux的过程中,安装Linux是每一个初学者的第一个门槛。在这个过程中间,最大的困惑莫过于给硬盘进行分区。虽然,现在各种发行版本的Linux已

标签: linux校验文件

本文链接地址:https://www.jiuchutong.com/biancheng/356982.html 转载请保留说明!

上一篇:linux配置防火墙iptables实例分享(linux防火墙设置firewalld)

下一篇:linux wget下载进度条变成多行显示的解决方法(wget下载命令)

  • 北京增值税发票查验平台
  • 企业购进固定资产
  • 偷税漏税逃税是什么意思
  • 买材料通过公司走账合法吗
  • 小规模纳税人个税是月报还是季报
  • 未开票收入缴纳增值税怎么冲减补开发票
  • 应付账款暂估余额
  • 会计科目生产成本怎么算
  • 社保的滞纳金算是社保里的吗
  • a3软件怎么反记账
  • 销售过程中客户买的是什么
  • 资产负债表总账科目有哪些
  • 员工宿舍免征房产税
  • 代收税款
  • 减免应收账款账务处理
  • 新会计准则短期租赁会计分录
  • 房地产行业零税率发票
  • 不是办税员可以去税局办事吗
  • 免抵退申报的操作流程图
  • 增值税纳税表销售额的填写
  • 费用报销单与付款申请单的用处区别
  • 一般纳税人增值税申报表
  • 房地产停车场属于公共配套设施吗
  • 发票过期未认证怎么办
  • 技术转让减免所得额
  • 一般纳税人取得免税农产品进项怎么抵扣
  • 服务业核定征收税率表
  • 企业支付方式有几种
  • mac如何连接电脑
  • 在win7系统中如何让电脑恢复出厂设置方法
  • 预收账款与应收账款为什么合并
  • 分配利润给股东怎么做分录
  • win7系统我的电脑图标不见了
  • 王者荣耀电脑版怎么键盘操作
  • 补交上年度增值税附加税,怎么做账
  • 制造业工资计提
  • 自建办公楼装修要报建吗
  • 前端vscode配置
  • php xml转数组
  • php中实现文件上传需要用到哪几个函数
  • WINDOWS10系统怎样给电脑分区
  • vue中的provide/inject
  • 鸳鸯小鸟
  • js let用法
  • YOLOv5|YOLOv7|YOLOv8改各种IoU损失函数:YOLOv8涨点Trick,改进添加SIoU损失函数、EIoU损失函数、GIoU损失函数、α-IoU损失函数
  • nmap的命令
  • php限制
  • 保险公司发票能在异开吗
  • 小企业会计准则没有以前年度损益调整科目
  • python中的列表和元祖有什么区别
  • mongodb主备配置
  • 生产防疫物资的厂家联系方式
  • 认缴制下,资金什么时候必须到位
  • 固定资产的核算内容包括
  • 研发费用账务调整合同怎么写
  • 质保金怎么做账
  • 房地产公司销售土地使用权
  • 简易计税方法适用什么服务
  • 记账凭证填制完毕
  • 现金存入银行是什么凭证
  • 存货出售,资产减值损失如何处理
  • 坏账准备的账务处理怎么理解
  • 利润总额和未分成比例
  • 限额领料单属于什么凭证多选题
  • 出纳建账账户名称怎么写
  • 深度技术win10怎么样
  • 登录远程linux系统可以用的方法
  • mac上safari
  • linux find命令详解xargs
  • javascript详解
  • html初学
  • Unity 相关经典博客资源总结
  • jquery.js插件
  • Python selenium爬取table
  • vim命令详解
  • node爬取数据
  • jQuery插件是什么
  • 利用html css javascript做一个网页
  • 加拿大鹅海关被税交多少
  • 建筑行业增值税税率2021
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设