linux md5 加密字符串和文件方法
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.txt2. 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.txt2. 对字符串‘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 的校验值并予以检查
linux md5 加密字符串和文件方法相关推荐
- python凯撒密码加密写入文件_Python用户名密码登录系统(MD5加密并存入文件,三次输入错误将被锁定)及对字符串进行凯撒密码加解密操作...
#-*- coding: gb2312 -*-#用户名密码登录系统(MD5加密并存入文件)及对字符串进行凯撒密码加解密操作#作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/k ...
- Linux Vim替换字符串的一些方法小结
Linux Vim替换字符串的一些方法小结 使用Linux环境进行开发工作的程序猿经常有编辑器之争,是vim牛还是emacs棒.二者都是程序猿的开发神器,不管用好哪一个都会使你的工作事半功倍.本文重点 ...
- linux tail 查找字符串,linux 查找包含字符串的文件
1. 前言 本文主要讲解如何在Linux系统下查找包含指定字符串的文件和搜索相关关键字. 2. linux 查找包含字符串的文件相关实用案例 使用find命令查找文件,并把查找结果重定向至grep程序 ...
- Linux 快速删除大量小文件方法
Linux 快速删除大量小文件方法 当我们在linux系统中要删除数万或者数十万甚至数百万的文件时使用rm -rf *就不太好用,因为要等待很长一段时间.在这种情况之下我们可以使用linux系 ...
- MD5原理及加密字符串和文件
基本概念 MD5,全名Message Digest Algorithm 5 ,中文名为消息摘要算法第五版,为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护. 主要是通过特定的hash散 ...
- C++实现md5加密或计算文件的唯一性识别
由于网络上传了很多关于C++实现md5加密的类,至于那个是原创,我不敢妄加猜测,只是这里我声明我是转载的,并支持原创. 对于md5加密算法,我提供两文件: #ifndef MD5_H #define ...
- Linux MD5加密的简单使用
文章目录 一. 什么是MD5 二. Linux下的简单实现 三. 测试 最近看到PPP拨号在验证时,有两种验证方式,一种是口令验证协商(PAP),另一种是挑战-握手验证协议(CHAP),因为最近在做的 ...
- linux计算字符串个数,Linux 统计某个字符串个数的方法
在 Linux 系统下,有时候,我们可能要对一个日志文件进行分析.比如,分析日志文件中某个单词或者某个特殊字符串出现了多少次. 对于匹配统计,一般用到正则方法,下面总结了几个统计字符串个数的方法. 方 ...
- .NET生成常用16、32位MD5加密的两种方法
//MD5加密函数比较复杂,在.NET中我们不需要编写底层的算法. //平台已经提供两个生成MD5加密的方法: //经过改动一点就可以生成如现在DVBBS等论坛中使用的MD5密码 //⑴:使用C:\W ...
最新文章
- 简单粗暴,5行代码,快速实现图像分割
- spring boot整合spring5-webflux从0开始的实战及源码解析
- 使用代码创建具有organization unit的opportunity
- 【Day01】你有封装过 axios 吗?主要是封装哪些方面?如何中断 axios 请求?
- 如何获得CSDN深色模式(基于Edge的强制深色获取)
- python做客户端适合吗_为了选出最合适的 HTTP 客户端,我做了个测评
- Halcon 一维码(条形码)
- 微信小程序组件slider
- python中哈希是什么意思_python 中倒是什么事可哈希的意思那?
- h5支付回调返回值是什么 php_微信HTML5网页支付PHP + JS API总结
- java基础语法笔记
- H264编码器与H265编码器对比
- python 打包exe(包含把资源文件打进包)
- 【高级持续性威胁追踪】来自Mustang Panda的攻击? 我兔又背锅了!
- Kodu的下载与安装---Kodu少儿编程第二天
- S3c2440 IIC
- 支持向量机——SVM算法及例子(代码)
- 程序员的10大境界,计算科学的10层楼,比尔盖茨看了会自卑,牛顿看了会落泪!
- 计算机操作熟练说明,Mac新手必看教程,教你快速熟练mac电脑操作
- 90后都会选择的购车模式“网上购车平台一成首付”
热门文章
- 理解java虚拟机工作后了解吗_JAVA入门到再次入门——深入理解JAVA虚拟机(二)|七日打卡...
- oracle fs1 2多少u,甲骨文FS1系列闪存的“大道至简”
- 手机安装linux不root权限管理,不root手机也能使用linux环境并安装msf等工具
- Python实现简单的学生管理系统
- kodi android 键盘,KODI按键映射,看IPTV按键设置
- python生成器函数(generator),python3学习笔记:生成器generator
- 《软件需求分析(第二版)》期中考试试题总结/复习资料
- Hadoop搭建集群中输入hdfs namenode -format格式化节点时,提示:hdfs: command not found 解决办法
- linux的mount和umount指令使用
- python设计一个动物类_我用Python实现了12500张猫狗图像的精准分类