7.openssl enc

对称加密工具。了解对称加密的原理后就很简单了。

[[email protected] tmp]# man enc

NAME

enc - symmetric cipher routines

SYNOPSIS

openssl enc -ciphername [-in filename] [-out filename] [-pass arg] [-e] [-d] [-a/-base64] [-A] [-k password] [-kfile filename] [-K key] [-iv IV] [-S salt] [-salt] [-nosalt] [-z] [-md] [-p] [-P] [-bufsize number] [-nopad] [-debug] [-none] [-engine id]

enc和-ciphername:ciphername代表的是对称加密的算法名称(如base64、des),可以独立于enc直接使用openssl des,也可以enc -ciphername使用openssl enc -des。推荐在enc后使用,这样算法不依赖于硬件要求

-in filename:输入文件,不指定时默认是stdin

-out filename:输出文件,不指定时默认是stdout

-e:对输入文件加密操作,不指定时默认就是该选项

-d:对输入文件解密操作,只有显示指定该选项才是解密

-k password:加解密时指定的密码,不指定时有些加密算法需要交互输入密码

-a/-base64:在加密前和解密后进行base64编码,不指定时默认是二进制。它不是加解密的一部分,而是加解密前后对数据整理的一种格式

-salt:加密时使用salt值复杂化加密结果,不指定时默认该选项,但是使用随机salt值

-S salt:不使用随机salt值,而是指定的salt值

-p:打印加解密时salt值、key值和IV初始化向量值(也是复杂化加密的一种方式),解密时还输出解密结果

-P:和-p选项作用相同,但是打印时直接退出工具,不进行加密或解密操作

-md:摘要算法(单向加密),默认md5。该算法是拿来加密key部分的,见后面示例。

加密机制:根据指定的对称加密算法,对输入的密码进行单向加密(默认是md5)得到固定长度的加密密码,即对称加密的密钥,再使用对称密钥对文件进行对称加密。

解密机制:根据输入的解密密码和单向加密算法得到对称密钥,根据对称密钥解密文件。因此必须要输入正确的密码、单向加密算法和对称加密算法。

分别如下图所示:对于图中的命令看过示例部分的内容后就明白了。

注意事项:如果加密指定了-a/-base64、对称加密算法、单向加密算法,那么解密时也要指定。解密时可以不指定salt,因为salt只参与加密的推导过程,解密时会忽略指定的salt值,因此输入任意salt都是可以的。

示例:

这是测试文件test.txt中的内容。

[[email protected] test]# cat test.txt 

djklasdjk

使用默认算法加解密:其实并非加密,只是进行了重新编码,因此密码都不需要。

[[email protected] test]# openssl enc -a -in test.txt -out test.1

[[email protected] test]# cat test.1

ZGprbGFzZGprCg==    /*加密后的结果*/

[[email protected] test]# openssl enc -a -d -in test.1

djklasdjk    /*解密后的结果和加密前结果一样*/

使用des3加密算法加密:

[[email protected] test]# openssl enc -a -des3 -in test.txt -out test.1

enter des-ede3-cbc encryption password: /*输入的密码是123456*/

Verifying - enter des-ede3-cbc encryption password:

[[email protected] test]# openssl enc -a -des3 -d -in test.1 -k 123456 /*指定密码*/

djklasdjk

加密解密指定密码的格式有几种,在man openssl的“PASS PHRASE ARGUMENTS”部分有。这里的-k 123456对应的是-pass pass:123456。

加密时加入一点盐吧。其实不写时默认就已经加入了,只不过是加入随机盐值。使用-S可以指定盐的值。但是盐的值只能是16进制范围内字符的组合,即"0-9a-fA-F"的任意一个或多个组合。

[[email protected] test]# openssl enc -a -des3 -S ‘Ffff‘ -in test.txt -out test.1 -k 123456 

[[email protected] test]# cat test.1

U2FsdGVkX1///wAAAAAAAJuaM/xIiTLv7s+qaaRV23M=

[[email protected] test]# openssl enc -a -des3 -d -S ‘Ffff‘ -in test.1 -k 123456

djklasdjk

[[email protected] test]# openssl enc -a -des3 -d -in test.1 -k 123456   /*解密不指定salt也一样的*/

djklasdjk

使用-p和-P看看加解密时相关的参数吧。

[[email protected] test]# openssl enc -a -des3 -d -in test.1 -k 123456 -p

salt=FFFF000000000000

key=BFC6625C1427E898AD4E1C0A9E6E850CC0178DC631D2C253

iv =55C687D7CA5F3444

djklasdjk

其中key就是-k指定的password运算后的固定长度的值,加解密工具不会直接使用-k指定的密码进行加密,而是先将该指定密码运算得到固定长度的值,使用该值进行数据加密。因此enc伪命令还有一个“-K”选项,就是用于显示指定固定长度值的。

那么这个固定长度的值是怎么计算的呢?这就是-md选项指定的单向加密的作用了,对密码加密时还会将salt加入运算,所以不指定-S选项时因为随机salt的原因得到的key一定是不一样的。默认-md指定的是md5算法。

[[email protected] test]# openssl enc -a -des3 -S ‘ffff‘ -in test.txt -k 123456 -p -md md5

salt=FFFF000000000000

key=BFC6625C1427E898AD4E1C0A9E6E850CC0178DC631D2C253

iv =55C687D7CA5F3444

U2FsdGVkX1///wAAAAAAAJuaM/xIiTLv7s+qaaRV23M=
[[email protected] test]# openssl enc -a -des3 -S ‘ffff‘ -in test.txt -k 123456 -p

salt=FFFF000000000000

key=BFC6625C1427E898AD4E1C0A9E6E850CC0178DC631D2C253

iv =55C687D7CA5F3444

U2FsdGVkX1///wAAAAAAAJuaM/xIiTLv7s+qaaRV23M=

可见,salt一样,密码一样,算法一样,得到的key一样,加密的数据结果就一样。

[[email protected] test]# openssl enc -a -des3 -S ‘ffff‘ -in test.txt -k 123456 -p -md sha512

salt=FFFF000000000000

key=770AAF671702ADEB8F8828A6C5EA459675426D5495CF0BC5

iv =6AE106C6E4A8C3A1

U2FsdGVkX1///wAAAAAAADZi5iLwmAjsrZpYppm3vm4=

salt一样,密码一样,算法不一样,key就不一样了,key不一样,加密的数据结果就不一样。

时间: 2024-12-17 03:13:54

7.openssl enc的相关文章

Openssl enc命令

一.简介 enc - 对称加密例程,使用对称密钥对数据进行加解密,特点是速度快,能对大量数据进行处理.算法有流算法和分组加密算法,流算法是逐字节加,由于其容易被破译,现在已很少使用:分组加密算法是将数据分成固定大小的组里,然后逐组进行加密,如DES.分组算法中又有ECB,CBC,CFB,OFB,CTR等工作模式,其中默认选CBC工作模式. 二.语法 openssl enc -ciphername[-in filename] [-out filename] [-pass arg] [-e] [-d

(9) openssl enc(对称加密)

对称加密工具,了解对称加密的原理后就很简单了,原理部分见下文. openssl   enc  -ciphername   [-in filename]   [-out filename]   [-pass arg]   [-e]  [-d] [-a/-base64]   [-k password]  [-S salt] [-salt] [-md] [-p/-P] 选项说明: -ciphername        :指定对称加密算法(如des3),可独立于enc直接使用,如openssl des3

Openssl 之 enc 详解

一.介绍 enc - 对称加密例程,使用对称密钥对数据进行加解密,特点是速度快,能对大量数据进行处理.算法有流算法和分组加密算法,流算法是逐字节加密,数据经典算法,但由于其容易被破译,现在已很少使用:分组加密算法是将数据分成固定大小的组里,然后逐组进行加密,比较广为人知的是DES3.分组算法中又有ECB,CBC,CFB,OFB,CTR等工作模式,其中默认选CBC工作模式. 二.语法格式            openssl enc -ciphername [-in filename] [-out

安全与加密(openssl)

一.安全及威胁 NIST(National Institute of Standard and Technology,美国国家标准与技术研究院)制定了安全的数据应该具备的安全属性: 1)保密性 即认为安全的数据是具有隐私性的 2)完整性:数据不可被篡改,包括: 数据完整性: 系统完整性. 3)可用性 加密过的数据可以被还原且继续被使用 威胁我们数据安全的主要有以下攻击方式:STRIDE 1)Spoofing(假冒),arp欺骗等 2)Tampering(篡改) 3)Repudiation(否认)

加密、解密的原理及Openssl创建CA和ssh的基础应用

加密.解密的原理及Openssl创建CA和ssh的基础应用 随着互联网的不断发展和技术的不断成熟,在互联网上传输文件不在安全,在需要传送重要的数据时就必须加密处理. 密码算法分为三种:分别是对称加密,公钥加密,单向加密:以及需要对加密算法的认证,叫做认证协议.下面为大家概述对称加密,公钥加密,单向加密及认证协议 对称加密: 采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密. 需要对加密和解密使用相同密钥的加密算法.由于其速度快,对称性

openssl与数据传输安全

数据安全服务的几个方面:     1.认证             访问控制 阻止对资源的未授权访问     2.数据保密性      3.数据完整性          要保证发送方所发送的数据没有被修改...     4.不可否认性 一.怎么验证数据的完整性.也就怎么知道数据在传输的过程中没有被修改过.这就要使用到单向加密算法,提取数据的指纹(特征码). 数据的传输双方为:甲.乙 甲:在数据传输之前,提取该数据的"指纹"然后,把数据指纹附加在数据中一起发送给乙. 乙:接收到该数据以后

openssl

https的实现过程 client 从互联网下载CA的证书(公匙 ),用于验证server的身份 server 通过加密算法生成一对密匙,将公匙发给CA认证机构,做数字前面 CA通过自己的私匙加密server公匙并加上自己的数字签名后,将生成的数字证书发给server client 与 server 通过TCP 的三次握手建立连接 client发出HTTP 的报文请求,并和server协商使用哪种算法加密 server 响应 报文并将证书(公匙)发给客户端 client通过CA的证书(公匙)解密

Linux命令:openssl

openssl命令简介: SSL是Secure Sockets Layer(安全套接层协议)的缩写,可以在Internet上提供秘密性传输.Netscape公司在推出第一个Web浏览器的同时,提出了SSL协议标准.其目标是保证两个应用间通信的保密性和可靠性,可在服务器端和用户端同时实现支持.已经成为Internet上保密通讯的工业标准. SSL能使用户/服务器应用之间的通信不被攻击者窃听,并且始终对服务器进行认证,还可选择对用户进行认证.SSL协议要求建立在可靠的传输层协议(TCP)之上.SSL

openssl大纲

1.加密和SSL机制:http://www.cnblogs.com/f-ck-need-u/p/6089523.html 2.openssl命令总指挥:http://www.cnblogs.com/f-ck-need-u/p/6089703.html 3.openssl genrsa:http://www.cnblogs.com/f-ck-need-u/p/6089730.html 4.openssl rsa:http://www.cnblogs.com/f-ck-need-u/p/608979