扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
相关库函数如下:
创新互联主营五华网站建设的网络公司,主营网站建设方案,成都app软件开发,五华h5小程序定制开发搭建,五华网站营销推广欢迎五华等地区企业咨询
#include openssl/md5.h
unsigned char *MD5(const unsigned char *d, unsigned long n,unsigned char *md);
int MD5_Init(MD5_CTX *c);
int MD5_Update(MD5_CTX *c, const void *data,unsigned long len);
int MD5_Final(unsigned char *md, MD5_CTX *c);
Linux环境md5校验
1、检测单个文件的MD5值:
md5sum filename
2、如果目录下有md5.md5文件,该文件描述了该文件夹下的所有文件的MD5值,可批量校验,该文件的内容为一个文件一行,格式为MD5TABFILEPATH
3、使用一下命令进行批量校验:
md5sum -c md5.md5
Linux下查询文件的MD5值:md5sum xxx.iso.md5
MD5算法常常被用来验证网络文件传输的完整性,防止文件被人篡改。MD5全称是报文摘要算法(Message-Digest Algorithm 5),此算法对任意长度的信息逐位进行计算,产生一个二进制长度为128位(十六进制长度就是32位)的“指纹”(或称“报文摘要”),不同的文件产生相 同的报文摘要的可能性是非常非常之小的。
在linux或Unix上,md5sum是用来计算和校验文件报文摘要的工具程序。一般来说,安装了Linux后,就会有md5sum这个工具,直接在命令行终端直接运行。可以用下面的命令来获取md5sum命令帮助 man md5sum
使用md5sum来产生指纹(报文摘要)命令如下:md5sum file file.md5 或者 md5sum file file.md5
注: 和 的区别在于: 表示把由file文件产生的摘要重定向到文件file.md5,但是会覆盖file.md5里面的内容;而 则将输出的摘要附加到file.md5文件的后面。也可以把多个文件的报文摘要输出到一个md5文件中,这要使用通配符*,比如某目录下有几个iso文 件,要把这几个iso文件的摘要输出到iso.md5文件中,命令如下:md5sum *.iso iso.md5
使用md5报文摘要验证文件,方法有二:
a、把下载的文件file和该文件的file.md5报文摘要文件放在同一个目录下,然后用如下命令进行验证:md5sum -c file.md5 然后如果验证成功,则会输出:正确;
b、下载了文件file,然后运行下面的命令:md5sum file 命令会输出一个md5的报文摘要,然后把这个报文摘要直接与file.md5中的内容比较,如果一样,就说明验证正确。
交互式输入
管道标准输入处理
对文件处理
利用openssl进行BASE64编码解码、md5/sha1摘要、AES/DES3加密解密
针对文件
对字符串‘abc’进行aes加密,使用密钥123,输出结果以base64编码格式给出:
对字符串‘abc’进行des3加密,使用密钥123,输出结果以base64编码格式给出:
这里以字符串123456为例子,它的md5密文值为:e10adc3949ba59abbe56e057f20f883e\x0d\x0a这里以1.txt为需要被加密的文件。\x0d\x0a\x0d\x0a一、用oppnsslmd5加密字符串和文件的方法。\x0d\x0a1.oppnsslmd5加密字符串的方法\x0d\x0aa.手动输入命令及过程如下:\x0d\x0a#openssl//在终端中输入openssl后回车。\x0d\x0aOpenSSLmd5//输入md5后回车\x0d\x0a123456//接着输入123456,不要输入回车。然后按3次ctrl+d。\x0d\x0a123456e10adc3949ba59abbe56e057f20f883e//123456后面的就是密文了\x0d\x0a解释:为何在输入123456后不回车呢?\x0d\x0a是因为openssl默认会把回车符当做要加密的字符串中的一个字符,所以得到的结果不同。如果你输入123456后回车,在按2次ctrl+d。得到的结果是:\x0d\x0aOpenSSLmd5\x0d\x0a123456\x0d\x0af447b20a7fcbf53a5d5be013ea0b15af//因为openssl不忽略回车符导致的\x0d\x0ab.或者直接用管道命令\x0d\x0a#echo-n123456|opensslmd5//必须要有-n参数,否则就不是这个结果了。\x0d\x0ae10adc3949ba59abbe56e057f20f883e\x0d\x0a解释:为何要加-n这个参数?\x0d\x0a-n就表示不输入回车符,这样才能得到正确的结果。如果你不加-n,那么结果和前面说的一样为:\x0d\x0af447b20a7fcbf53a5d5be013ea0b15af//因为openssl不忽略回车符导致的\x0d\x0a2.用openssl加密文件。\x0d\x0a#opensslmd5-in1.txt\x0d\x0a\x0d\x0a##################################################3\x0d\x0aOpenssl其他相关加密的命令参数:引自:实用命令:利用openssl进行BASE64编码解码、md5/sha1摘要、AES/DES3加密解密收藏\x0d\x0a一.利用openssl命令进行BASE64编码解码(base64encode/decode)\x0d\x0a1.BASE64编码命令\x0d\x0a对字符串‘abc’进行base64编码:\x0d\x0a#echoabc|opensslbase64\x0d\x0aYWJjCg==(编码结果)\x0d\x0a如果对一个文件进行base64编码(文件名t.txt):\x0d\x0a#opensslbase64-int.txt\x0d\x0a2.BASE64解码命令\x0d\x0a求base64后的字符串‘YWJjCg==’的原文:\x0d\x0a#echoYWJjCg==|opensslbase64-d\x0d\x0aabc(解码结果)\x0d\x0a如果对一个文件进行base64解码(文件名t.base64):\x0d\x0a#opensslbase64-d-int.base64\x0d\x0a二.利用openssl命令进行md5/sha1摘要(digest)\x0d\x0a1.对字符串‘abc’进行md5摘要计算:echoabc|opensslmd5\x0d\x0a若对某文件进行md5摘要计算:opensslmd5-int.txt\x0d\x0a2.对字符串‘abc’进行sha1摘要计算:echoabc|opensslsha1\x0d\x0a若对某文件进行sha1摘要计算:opensslsha1-int.txt\x0d\x0a三.利用openssl命令进行AES/DES3加密解密(AES/DES3encrypt/decrypt)\x0d\x0a对字符串‘abc’进行aes加密,使用密钥123,输出结果以base64编码格式给出:\x0d\x0a#echoabc|opensslaes-128-cbc-k123-base64\x0d\x0aU2FsdGVkX18ynIbzARm15nG/JA2dhN4mtiotwD7jt4g=(结果)\x0d\x0a对以上结果进行解密处理:\x0d\x0a#echoU2FsdGVkX18ynIbzARm15nG/JA2dhN4mtiotwD7jt4g=|opensslaes-128-cbc-d-k123-base64\x0d\x0aabc(结果)\x0d\x0a若要从文件里取原文(密文)进行加密(解密),只要指定-in参数指向文件名就可以了。\x0d\x0a进行des3加解密,只要把命令中的aes-128-cbc换成des3就可以了。\x0d\x0a注:只要利用opensslhelp就可以看到更多的安全算法了。\x0d\x0a###############################################\x0d\x0a\x0d\x0a二、利用php的md5函数加密字符串\x0d\x0a#toucha.php//创建a.php文件\x0d\x0a#via.php//用vi编辑a.php文件\x0d\x0a将输入进去后保存\x0d\x0a#phpa.php//运行a.php文件\x0d\x0a显示:e10adc3949ba59abbe56e057f20f883e\x0d\x0a三、利用md5sum命令\x0d\x0aA.在linux或Unix上,md5sum是用来计算和校验文件报文摘要的工具程序。一般来说,安装了Linux后,就会有md5sum这个工具,直接在命令行终端直接运行。可以用下面的命令来获取md5sum命令帮助manmd5sum\x0d\x0a#md5sum_help\x0d\x0a有个提示:“WithnoFILE,orwhenFILEis-,readstandardinput.”翻译过来就是“如果没有输入文件选项或者文件选项为-,则从标砖读取输入内容”,即可以直接从键盘读取字符串来加密。\x0d\x0a利用md5sum加密字符串的方法\x0d\x0a#md5sum//然后回车\x0d\x0a123456//输入123456.然后按两次ctrl+d.\x0d\x0a显示:\x0d\x0a123456e10adc3949ba59abbe56e057f20f883e红色代表加密后的值\x0d\x0a还可以用管道命令:\x0d\x0a#echo-n'123123'|md5sum\x0d\x0a\x0d\x0a或者写成md5加密脚本,名字叫md5.sh,\x0d\x0a将以下内容复制进脚本里:\x0d\x0a#!/bin/bash\x0d\x0aecho-n$1|md5sum|awk'{print$1}'\x0d\x0a\x0d\x0a保存后,给脚本执行权限。\x0d\x0a#shmd5.sh123456\x0d\x0a显示:e10adc3949ba59abbe56e057f20f883e\x0d\x0aB.其实也可以将文本放入文本文件,然后用md5sum加密改文本,也可以得到字符串加密的值。过程如下:\x0d\x0a#toucha.txt\x0d\x0a#echo-n123456a.txt//将123456写进文本文件,不能丢了_n参数,避免回车符干扰\x0d\x0a#md5suma.txt\x0d\x0a显示:e10adc3949ba59abbe56e057f20f883ea.txt\x0d\x0a\x0d\x0actrl+d有两个含义:\x0d\x0a一是向程序发送文件输入结束符EOF。\x0d\x0a二是向程序发送exit退出指令。程序收到信号后具体动作是结束输入、然后等待,还是直接退出,那就要看该程序捕获信号后是如何操作的了。\x0d\x0amd5sum属于第一个含义。两次strl+d了,第一次读取EOF指令,再次捕获就会当成exit指令。而shell一类的程序,会直接把ctrl+d解析为退出指令。
计算设备文件的md5所要用到的命令就是 md5sum
man一下md5sum命令,得到md5sum命令的用法:
md5sum [OPTION]… [FILE]…
1、计算指定文件的MD5值(如a.rmvb)
md5sum a.rmvb
输出结果类似如下:
8dab209d0b7c7fb1afb071f0855a8c37 a.rmvb
即计算出的md5值加上文件名
测试了一下,发现这命令算一2G多的电影所用时间不过几十钞,效率还行。
2、计算字符串MD5值(如字符串 “password”)
echo -n “password” | md5sum
输出:
5f4dcc3b5aa765d61d8327deb882cf99 –
上面echo加 -n的作用是去除串结尾的回车符,因为echo命令默认会添加一回车符。
像如果是:
echo “password” | md5sum
那输出的将会是:
286755fad04869ca523320acce0dc6a4 –
不加-n与加-n结果是不一样的。正确的做法一般是要加-n参数。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流