如何在linux使用md5对其进行加密

如何在linux使用md5对其进行加密,第1张

这里以字符串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就可以看到更多的安全算法了。

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

二、 利用php的md5函数加密字符串

#touch a.php//创建a.php文件

#vi a.php//用vi 编辑a.php文件

将<?php echo md5(123456)?>输入进去后保存

#php a.php //运行a.php文件

显示:e10adc3949ba59abbe56e057f20f883e

三、 利用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参数,避免回车符干扰

#md5suma.txt

显示:e10adc3949ba59abbe56e057f20f883e a.txt

ctrl+d有两个含义:

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

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

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

SHA-1(英语:Secure Hash Algorithm 1,中文名:安全散列算法1)是一种密码散列函数,美国国家安全局设计,并由美国国家标准技术研究所(NIST)发布为联邦数据处理标准(FIPS)。SHA-1可以生成一个被称为消息摘要的160位(20字节)散列值,散列值通常的呈现形式为40个十六进制数。

本文假设你已经安装好了OpenSSL,并且持有一份1.1.1的源码。

SHA1相关的头文件在sha.h中、源文件在crypto/sha目录中。

这个结构定义了SHA运算的海棉算法上下文。主要字段含义:

h0, h1, h2, h3, h4 —— 存放海棉运算的中间结果。

data —— 数据分组缓冲区,用于暂存不够分组大小的数据。

num —— 缓冲区数据大小。

在1.1.1中,大多数的数据结构已经不再向使用者开放,从封装的角度来看,这是更合理的。如果你在头文件中找不到结构定义,不妨去源码中搜一搜。

int SHA1_Init(SHA_CTX *c)

初使化SHA1上下文结构。

总是返回1。

int SHA1_Update(SHA_CTX *c, const void *data, size_t len)

向SHA1上下文输入字节流。

成功返回1,失败返回0。

int SHA1_Final(unsigned char *md, SHA_CTX *c)

生成最终的SHA1摘要串。

成功返回1,失败返回0。

unsigned char *SHA1(const unsigned char *d, size_t n, unsigned char *md)

对于短的字符串,可以使用该函数一次性生成SHA1摘要,简化调用。

下面这个例子演示了使用两种方式生成SHA1摘要,并对比结果。

输出:

ret:1

1a7ef0b4975534ab2d8781b1136997e9a73b960a

ret 0x7fff1aba9a80

sSHA 0x7fff1aba9a80

1a7ef0b4975534ab2d8781b1136997e9a73b960a

MD5可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。MD5由MD4、MD3、MD2改进而来,主要增强算法复杂度和不可逆性。MD5算法因其普遍、稳定、快速的特点,仍广泛应用于普通数据的加密保护领域 。

SHA-1(英语:Secure Hash Algorithm 1,中文名:安全散列算法1)是一种密码散列函数,美国国家安全局设计,并由美国国家标准技术研究所(NIST)发布为联邦数据处理标准(FIPS)。SHA-1可以生成一个被称为消息摘要的160位(20字节)散列值,散列值通常的呈现形式为40个十六进制数。

CRC32检错能力极强,开销小,易于用编码器及检测电路实现。从其检错能力来看,它所不能发现的错误的几率仅为0.0047%以下。从性能上和开销上考虑,均远远优于奇偶校验及算术和校验等方式。

因而,在数据存储和数据通讯领域,CRC无处不在:著名的通讯协议X.25的FCS(帧检错序列)采用的是CRC-CCITT,ARJ、LHA等压缩工具软件采用的是CRC32,磁盘驱动器的读写采用了CRC16,通用的图像存储格式GIF、TIFF等也都用CRC作为检错手段。

扩展资料:

在MD5算法中,首先需要对信息进行填充,这个数据按位(bit)补充,要求最终的位数对512求模的结果为448。也就是说数据补位后,其位数长度只差64位(bit)就是512的整数倍。即便是这个数据的位数对512求模的结果正好是448也必须进行补位。

补位的实现过程:首先在数据后补一个1 bit; 接着在后面补上一堆0 bit, 直到整个数据的位数对512求模的结果正好为448。总之,至少补1位,而最多可能补512位 。                         

参考资料来源:百度百科-MD5  

参考资料来源:百度百科-SHA1

参考资料来源:百度百科-CRC32


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8459803.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-16
下一篇2023-04-16

发表评论

登录后才能评论

评论列表(0条)

    保存