背景:
经常在下载一些gnu软件的时候,会看到软件包ftp的地址下还会有MD5SUM,Sha1SUM这样的文件,一直不知道有什么作用。
昨晚在配置vim的自动补齐功能时,遇到了同样的问题,承蒙某大神网友指点特此记录一下。
为了方便起见,本文暂时仅以md5校验为例。其他的加密算法以后有机会再补充。
MD5校验流程
1.首先文件提供方需要提供一个别人需要下载的文件a.txt, 和文件a对应的md5文件(如a.md5)。
2.文件使用方在将a.txt以及a.md5一同下载下来,进行校验,得到校验结果。
具体步骤
以文件plug.vim为例
文件提供方:
1.产生对应的md5文件,并将输出内容重定向到plug.vim.md5。
>md5sum plug.vim > plug.vim.md5
将上面的文件上传至github或者其他地方供文件使用方下载
如果有多个文件需要md5加密,就要重定向时分成多行,每行的格式和上面的是一样的。
Note:
介绍下plug.vim.md5文件的内容,我的文件内容如下:
0ec2be5d481f384253910ef8320c85fe plug.vim
前面一个0ec2...这一串数字是通过md5加密算法算出来的一段数字,后面plug.vim是被加密的文件名。
具体怎么算的,如何校验的以后有机会再研究和补充。
文件使用方:
2.下载plug.vim和plug.vim.md5以后,进行校验
>md5sum --check plug.vim.md5
也可以使用 -c选项
如果输出是
plug.vim: OK
即表明通过校验。
待完善补充
md5 sha主要用来检查文件的完整性。只能说是个指纹,不具有防抵赖的作用。
pgp可以有效防抵赖,pgp可以知道是谁发布的这个文件,它的前提是,
使用方要相信文件提供者,一旦签名跟发布者的不匹配,就不要相信文件没有被修改过。
因为md5本身你也不知道是不是最原始的md5,如果提供文件的网站被黑了。
文件被他人修改,并且他使用md5加密算法生成了新的md5,文件使用者就不知道这是不是原始的md5了。
pgp的作用主要有两个:
一个是为了防止下载中被篡改(比如被网络劫持了,就有可能被篡改)
另一个就是为了检查文件的完整性。
当你使用别人的github上的库的时候,或者要改造别人代码的时候,最好不要用master的版本。
因为master的版本是开发版本始终再变化。你可以在tag里面选择一个自己要修改的版本,然后提交给别人。
或者自己写教程用。master里面的版本接口都是有可能改变的。
如果别人的接口改变了,而你的文档或者代码没有及时跟着更新,就很可能导致你的代码或者文档是不可用的,这点要注意。
同一个版本的接口一般不会变,如果接口变了,就要更新大版本号。比如php5.6和php7就是大更新,python2 和 python3也是大更新,
开源软件这种事情有很多,比如java7和java8,node8与node10。这些都是接口设计都变了的。
如果不用版本用master,老代码怎么办?你又不想一个一个去改。
所以一定要用版本。