linux md5 加密字符串和文件方法_aes-128-cbc md5-程序员宅基地

技术标签: Linux  linux  md5  

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  加密字符串和文件的方法。

1. 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)
1. BASE64编码命令
对字符串‘abc’进行base64编码:
# echo abc | openssl base64
YWJjCg==  (编码结果)

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

2. BASE64解码命令
求base64后的字符串‘YWJjCg==’的原文:
# echo YWJjCg== | openssl base64 -d
abc   (解码结果)

如果对一个文件进行base64解码(文件名t.base64):
# openssl base64 -d -in t.base64

二. 利用openssl命令进行md5/sha1摘要(digest)
1. 对字符串‘abc’进行md5摘要计算:echo abc | openssl md5
若对某文件进行md5摘要计算:openssl md5 -in t.txt

2. 对字符串‘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:

  1. $ echo -n 'hello'|md5sum|cut -d ' ' -f1
  2.  
得到的MD5值:
  1. 5d41402abc4b2a76b9719d911017c592
  2.  
命令解释:
md5sum: 显示或检查 MD5(128-bit) 校验和,若没有文件选项,或者文件处为"-",则从标准输入读取。
echo -n : 不打印换行符。
cut:  cut用来从标准输入或文本文件中剪切列或域。剪切文本可以将之粘贴到一个文本文件。 
        -d 指定与空格和tab键不同的域分隔符。-f1 表示第一个域。参考这里。

获取文件的MD5值:
 
  1. $ md5sum linuxmint-12-gnome-dvd-32bit.iso|cut -d ' ' -f1
得到的MD5值:
ee3d6e2ca498bc7685b7f17cdb5f2eea

 

使用MD5校验iso文件:
  1. $ md5sum linuxmint-12-gnome-dvd-32bit.iso >linuxmint-12-gnome-dvd-32bit.md5
  2.  
注意linuxmint-12-gnome-dvd-32bit.md5的内容是:
  1. ef3d6e2ca498bc7685b7f17cdb5f2eea linuxmint-12-gnome-dvd-32bit.iso
  2.  
把linuxmint-12-gnome-dvd-32bit和其验证文件
    linuxmint-12-gnome-dvd-32bit.md5放到同一目录下用下面的命令:
  1. $ md5sum -c linuxmint-12-gnome-dvd-32bit.md5
  2.  
如果校验正确则输出: 
  1. linuxmint-12-gnome-dvd-32bit.iso: 确定
  2.  
如果校验错误则输出:
  1. linuxmint-12-gnome-dvd-32bit.iso: 失败
  2. md5sum: 警告:1/1 生成的校验和不匹配
命令解释:
md5 -c: 从文件中读取MD5 的校验值并予以检查
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_28584889/article/details/93717461

智能推荐

搭建企业线上培训系统_线上培训平台部署架构-程序员宅基地

文章浏览阅读593次。企业线上培训系统的出现,一些集团公司的内部例会,决策会议或培训会议,可以通过线上统一进行,不再需要集中企业所有员工到指定地点培训。普通企业可以在外网租用线上培训系统,而对于一些涉密单位数据如何保障安全?企业线上培训系统根据网络环境有不同的部署方式,哪种部署更适合自身需求呢?1、纯内网部署企业线上培训系统,部署在防火墙内,供企业内部培训使用企业这样部署在线培训系统,所有数据都内网服务器上,丢失风险低,安全性高,并且内网网络带宽可以得到保障。连通宝采用软硬一体的部署方式,稳定性也可以得到保障。_线上培训平台部署架构

JS解构赋值-程序员宅基地

文章浏览阅读1.3w次,点赞24次,收藏42次。解构赋值语法是一种 Javascript 表达式。通过解构赋值,可以将属性/值从对象/数组中取出,赋值给其他变量。本文将讨论解构赋值的作用与其用法。_js解构赋值

21:单词替换_b2135 单词替换-程序员宅基地

文章浏览阅读665次。描述输入一个字符串,以回车结束(字符串长度<=100)。该字符串由若干个单词组成,单词之间用一个空格隔开,所有单词区分大小写。现需要将其中的某个单词替换成另一个单词,并输出替换之后的字符串。输入输入包括3行,第1行是包含多个单词的字符串 s;第2行是待替换的单词a(长度 <= 100);第3行是a将被替换的单词b(长度 <= 100).s, a, b 最前面和最后面都没有空格.输出输出只有 1 行,将s中所有单词a替换成b之后的字符串。样例输入You want som_b2135 单词替换

Android客户端线上BUG收集、反馈及定位_bug的ower是谁指的是什么意思-程序员宅基地

文章浏览阅读5.7k次。1. 线上BUG来源用户反馈用户反馈由运营或者客服或PD童鞋进行收集,对集中反应比较多的问题反馈到项目组及相关童鞋,对体验不好的地方进行产品改进。回归测试每周服务端预发和上线以后,在客户端进行回归测试工作,现在是由专门的童鞋进行回归,以后的方向是自动化回归。_bug的ower是谁指的是什么意思

[Leedcode][JAVA][第22题括号生成][DFS][BFS][动态规划]_括号生成22java-程序员宅基地

文章浏览阅读245次。【问题描述】22. 括号生成数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例:输入:n = 3输出:[ "((()))", "(()())", "(())()", "()(())", "()()()" ]【解答思路】左括号数量需要一直大于..._括号生成22java

BS架构与CS架构的区别(最详细)-程序员宅基地

文章浏览阅读10w+次,点赞121次,收藏777次。BS架构与CS架构的区别引言特点C/S系统结构B/S系统结构CS与BS的比较C/S 与 B/S 区别:现状与趋势(转自知乎)引言C/S结构,即Client/Server(客户机/服务器)结构,是大家熟知的软件系统体系结构,通过将任务合理分配到Client端和Server端,降低了系统的通讯开销,可以充分利用两端硬件环境的优势。早期的软件系统多以此作为首选设计标准。B/S结构,即Browse..._bs架构

随便推点

扫地机器人-二分+贪心-程序员宅基地

文章浏览阅读120次。最大什么的最小值,最小什么的最大值就是二分。

计算机组成原理知识复习:_计算机组成原理sm信号是什么-程序员宅基地

文章浏览阅读35次。计组,知识点归纳_计算机组成原理sm信号是什么

关于vector的使用说明-程序员宅基地

文章浏览阅读843次,点赞13次,收藏23次。关于vector在实际运用中的一些说明

【noVNC】使用noVNC实现浏览器网页访问vnc(基于web的远程桌面)_网页 vnc-程序员宅基地

文章浏览阅读1.4k次,点赞14次,收藏21次。vnc novnc_网页 vnc

python爬取网页数据步骤,python爬取网页详细教程_python爬贴吧数据-程序员宅基地

文章浏览阅读970次,点赞20次,收藏25次。大家好,小编来为大家解答以下问题,利用python爬取简单网页数据步骤,怎么用python爬取网站上的数据,今天让我们一起来看看吧!下面就按这个路线逐一讲讲各部分的内容;HTTP协议是一个应用层面向对象协议,也叫超文本传输协议。是基于TCP协议的可靠传输,采用客户端/服务器端模式,指定了客户端可能发送给服务器什么样的消息,以及服务端给出什么样的响应。HTTP协议请求由状态行、请求头和请求正文三部分组成;请求端的HTTP报文叫做请求报文,响应端的叫做响应报文,通常,并不一定要有报文主体。_python爬贴吧数据

去除jQuery中DataGrid的滚动条_jqgrid滚动条-程序员宅基地

文章浏览阅读138次。在编程中,使用jQuery的DataGrid插件可以方便地展示和管理数据。然而,默认情况下,DataGrid会显示一个滚动条,以便在数据超出可见区域时进行滚动查看。为了去除DataGrid的滚动条,我们需要通过CSS样式来修改它的外观。接下来,我们需要初始化DataGrid并应用上述的CSS样式。通过以上步骤,你已经成功去除了jQuery中DataGrid的滚动条。现在,你可以根据自己的需求进行进一步的定制和样式修改。如果需要进一步配置DataGrid,你可以在初始化代码中添加适当的选项。_jqgrid滚动条

推荐文章

热门文章

相关标签