MD5算法常常被用来验证网络文件传输的完整性,防止文件被人篡改。MD5全称是报文摘要算法(Message-Digest Algorithm 5),此算法对任意长度的信息逐位进行计算,产生一个二进制长度为128位(十六进制长度就是32位)的“指纹”(或称“报文摘要”),不同的文件产生相 同的报文摘要的可能性是非常非常之小的。

MD5的作用是让大容量信息在用数字签名软件签署私人密钥前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的十六进制数字串)。除了MD5以外,其中比较有名的还有sha-1、RIPEMD以及Haval等。

对MD5算法简要的叙述可以为:MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。

算法示意图:

linux下生成字符串密文的命令、软件及使用方法如下

这里以字符串123456为例子,它的md5密文值为:e10adc3949ba59abbe56e057f20f883e

这里以1.txt为需要被加密的文件。

一、 用oppnssl md5 加密字符串和文件的方法。

oppnssl md5 加密字符串的方法

a.手动输入命令及过程如下:

#openssl //在终端中输入openssl后回车。

OpenSSL> md5 //输入md5后回车

123456 //接着输入123456,不要输入回车。然后按3次ctrl+d。

123456e10adc3949ba59abbe56e057f20f883e //123456后面的就是密文了

解释:为何在输入123456后不回车呢?

是因为openssl默认会把回车符当做要加密的字符串中的一个字符,所以得到的结果不同。如果你输入123456后回车,在按2次ctrl+d。得到的结果是:

OpenSSL> md5

123456

f447b20a7fcbf53a5d5be013ea0b15af //因为openssl不忽略回车符导致的

b.或者直接用管道命令

echo -n 123456 | openssl md5 //必须要有-n参数,否则就不是这个结果了。

e10adc3949ba59abbe56e057f20f883e

解释:为何要加-n这个参数?

-n就表示不输入回车符,这样才能得到正确的结果。如果你不加-n,那么结果和前面说的一样为:

f447b20a7fcbf53a5d5be013ea0b15af //因为openssl不忽略回车符导致的

2.用openssl加密文件。

#openssl md 5 -in 1.txt

##################################################3

Openssl其他相关加密的命令参数:引自:实用命令:利用openssl进行BASE64编码解码、md5/sha1摘要、AES/DES3加密解密 收藏

一. 利用openssl命令进行BASE64编码解码(base64 encode/decode)

BASE64编码命令

对字符串‘abc’进行base64编码:

echo abc | openssl base64

YWJjCg== (编码结果)

如果对一个文件进行base64编码(文件名t.txt):

openssl base64 -in t.txt

BASE64解码命令

求base64后的字符串‘YWJjCg==’的原文:

echo YWJjCg== | openssl base64 -d

abc (解码结果)

如果对一个文件进行base64解码(文件名t.base64):

openssl base64 -d -in t.base64

二. 利用openssl命令进行md5/sha1摘要(digest)

对字符串‘abc’进行md5摘要计算:echo abc | openssl md5

若对某文件进行md5摘要计算:openssl md5 -in t.txt

对字符串‘abc’进行sha1摘要计算:echo abc | openssl sha1

若对某文件进行sha1摘要计算:openssl sha1 -in t.txt

三. 利用openssl命令进行AES/DES3加密解密(AES/DES3 encrypt/decrypt)

对字符串‘abc’进行aes加密,使用密钥123,输出结果以base64编码格式给出:

echo abc | openssl aes-128-cbc -k 123 -base64

U2FsdGVkX18ynIbzARm15nG/JA2dhN4mtiotwD7jt4g= (结果)

对以上结果进行解密处理:

echo U2FsdGVkX18ynIbzARm15nG/JA2dhN4mtiotwD7jt4g= | openssl aes-128-cbc -d -k 123 -base64

abc (结果)

若要从文件里取原文(密文)进行加密(解密),只要指定 -in 参数指向文件名就可以了。

进行des3加解密,只要把命令中的aes-128-cbc换成des3就可以了。

注:只要利用openssl help就可以看到更多的安全算法了。

###############################################

二、 利用md5sum命令

A.在linux或Unix上,md5sum是用来计算和校验文件报文摘要的工具程序。一般来说,安装了Linux后,就会有md5sum这个工具,直接在命令行终端直接运行。可以用下面的命令来获取md5sum命令帮助 man md5sum

#md5sum –help

有个提示:“With no FILE, or when FILE is -, read standard input.”翻译过来就是“如果没有输入文件选项或者文件选项为 - ,则从标砖读取输入内容”,即可以直接从键盘读取字符串来加密。

利用md5sum加密字符串的方法

md5sum //然后回车

123456 //输入123456.然后按两次ctrl+d.

显示:

123456e10adc3949ba59abbe56e057f20f883e 红色代表加密后的值

还可以用管道命令:

#echo -n '123123' | md5sum

或者写成md5加密脚本,名字叫md5.sh,

将以下内容复制进脚本里:

#!/bin/bash

echo -n $1 | md5sum | awk '{print $1}'

保存后,给脚本执行权限。

#sh md5.sh 123456

显示:e10adc3949ba59abbe56e057f20f883e

B.其实也可以将文本放入文本文件,然后用md5sum 加密改文本,也可以得到字符串加密的值。过程如下:

#touch a.txt

#echo -n 123456 > a.txt //将123456写进文本文件,不能丢了 –n参数,避免回车符干扰

#md5sum a.txt

显示:e10adc3949ba59abbe56e057f20f883e a.txt

ctrl+d有两个含义:

一是向程序发送文件输入结束符EOF。

二是向程序发送exit退出指令。程序收到信号后具体动作是结束输入、然后等待,还是直接退出,那就要看该程序捕获信号后是如何操作的了。

md5sum属于第一个含义。两次strl+d了,第一次读取EOF指令,再次捕获就会当成exit指令。而shell一类的程序,会直接把ctrl+d解析为退出指令。

三、获取字符串的MD5值:

字符串“hello”的MD5:

$ echo -n 'hello'|md5sum|cut -d ' ' -f1

得到的MD5值:

5d41402abc4b2a76b9719d911017c592

命令解释:

md5sum: 显示或检查 MD5(128-bit) 校验和,若没有文件选项,或者文件处为"-",则从标准输入读取。

echo -n : 不打印换行符。

cut: cut用来从标准输入或文本文件中剪切列或域。剪切文本可以将之粘贴到一个文本文件。

-d 指定与空格和tab键不同的域分隔符。-f1 表示第一个域。参考这里。

获取文件的MD5值:

$ md5sum linuxmint-12-gnome-dvd-32bit.iso|cut -d ' ' -f1

得到的MD5值:

ee3d6e2ca498bc7685b7f17cdb5f2eea

使用MD5校验iso文件:

$ md5sum linuxmint-12-gnome-dvd-32bit.iso >linuxmint-12-gnome-dvd-32bit.md5

注意linuxmint-12-gnome-dvd-32bit.md5的内容是:

ef3d6e2ca498bc7685b7f17cdb5f2eea linuxmint-12-gnome-dvd-32bit.iso

把linuxmint-12-gnome-dvd-32bit和其验证文件

linuxmint-12-gnome-dvd-32bit.md5放到同一目录下用下面的命令:

$ md5sum -c linuxmint-12-gnome-dvd-32bit.md5

如果校验正确则输出:

linuxmint-12-gnome-dvd-32bit.iso: 确定

如果校验错误则输出:

linuxmint-12-gnome-dvd-32bit.iso: 失败

md5sum: 警告:1/1 生成的校验和不匹配

命令解释:

md5 -c: 从文件中读取MD5 的校验值并予以检查

博客声明

1、此博客为个人博客,不涉及商业用途,仅提供学习参考,内容均来自个人原创以及互联网转载和摘录。

2、此博客上带有原创标识的文章、图片、文件等,未经本人允许,不得用于商业用途以及传统媒体。网络媒体或个人转载请注明出处和链接,否则属于侵权行为。

3、此博客所转载的内容,均来自互联网转载和摘录。如果本博客侵犯了您的权益,请联系本人,本人将会在第一时间删除侵权文章!

4、联系方式:46219596@qq.com

5、感谢51CTO给我们提供了一个互相分享、互相学习技术知识的平台。博客中若有错误或表达不当之处,欢迎各位指正。

linux md5加密文件,linux md5 加密字符串和文件方法相关推荐

  1. python中文字符串写入文件,python写入中英文字符串到文件的方法

    python写入中英文字符串到文件的方法 本文实例讲述了python写入中英文字符串到文件的方法.分享给大家供大家参考.具体分析如下: python中如果使用系统默认的open方法打开的文件只能写入a ...

  2. 搜寻文件下包含某个字符串的文件

    sudo find / -name run.sh | sudo xargs  grep dos sudo find / -type f | sudo xargs grep dos

  3. linux字符串排序文件,Linux awk+uniq+sort 统计文件中某字符串出现次数并排序

    https://blog.csdn.net/qq_28766327/article/details/78069989 在服务器开发中,我们经常会写入大量的日志文件.有时候我们需要对这些日志文件进行统计 ...

  4. linux循环目录下目录,Shell循环列出目录下所有文件或查找目录下包含指定字符串的文件...

    一.循环列出目录下所有文件 #!/bin/bash function frfile() { local basefolder=$1 echo $basefolder #local filename f ...

  5. Linux grep命令、Linux cd命令、Linux pwd命令

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. Linux grep命令用于查找文件里符合条件的字符串. grep指令用于查找内容包含指定的范本样式 ...

  6. linux md5 加密字符串和文件方法

    linux md5 加密字符串和文件方法 MD5算法常常被用来验证网络文件传输的完整性,防止文件被人篡改.MD5全称是报文摘要算法(Message-Digest Algorithm 5),此算法对任意 ...

  7. windows 查找目录下文件中包含某个字符串

    可以使用windows自带的findstr.exe来实现. findstr.exe /s /i "string" *.*   上面的命令表示,当前目录以及当前目录的所有子目录下的所 ...

  8. C++ getline():从文件中读取一行字符串

    C++ getline():从文件中读取一行字符串 前一节中,详细介绍了如何使用 getline() 方法从 cin 输入流缓冲区中读取一行字符串.在此基础上,getline() 方法还适用于读取指定 ...

  9. php fwrite 追加写入,PHP fwrite 函数:将字符串写入文件(追加与换行)

    PHP fwrite() fwrite() 函数用于向文件写入字符串,成功返回写入的字符数,否则返回 FALSE . 语法: int fwrite( resource handle, string s ...

  10. matlab打开bmp,Matlab 读取文件夹中所有的bmp文件

    将srcimg文件下的bmp文件转为jpg图像,存放在dstimg文件夹下 str = 'srcimg'; dst = 'dstimg'; file=dir([str,'\*.bmp']); :len ...

最新文章

  1. 025_JDK的hashCode方法
  2. [转]Java 关闭线程的安全方法
  3. 如何linux查看mysql目录下日志_测试人员如何在linux服务器中查询mysql日志?
  4. 20210101 Barbalat引理
  5. Java实现单链表的反转
  6. LINUX下源码包安装mysql
  7. ABAP 标准培训教程 BC400 学习笔记之三:ABAP 编程语言的特性和基本构成要素
  8. springboot项目 tomcat8.x 频繁宕机 原因分析
  9. 看这玩意复习你还会挂科?《软件工程篇》
  10. Overleaf v2 评测
  11. Convolutional Neural Networks卷积神经网络(二)
  12. oracle表分区设计_ORACLE 分区表的设计
  13. dos 批量copy文件
  14. 能留住女友的,都是王者
  15. maven安装jar包到本地仓库
  16. 详解工业机器人和机械手臂的区别
  17. 正则表达式验证ip是否是内网ip
  18. canvas绘制出货单
  19. android实战理财,基于Android的理财系统APP的设计
  20. pac文件提取服务器,[工具使用] privoxy 实现 PAC 请求过滤

热门文章

  1. 移动端APM网络监控与优化实践
  2. 2022年最新有关“绿色消费积分”制度的行业利好
  3. 硬盘安装XP蓝屏,U盘安装XP提示INF file txtsetup……
  4. 《爱和自由》——孩子达到顺从的三个阶段
  5. 华大单片机-HC32L13X系列芯片OPA配置-芯虎论坛
  6. matlab在solver,matlab的solver
  7. Spring Cloud 微服务开发:入门、进阶与源码剖析 —— 9.4 Spring Cloud Gateway 路由断言工厂
  8. 将《先生请出山》放到桌面上,聊聊如何将视频做成动态壁纸
  9. 计算机四舍五函数,技巧:在Excel中四舍五入为六至五十的最佳函数算法
  10. hmailserver的反垃圾邮件功能