7.openssl enc
对称加密工具。了解对称加密的原理后就很简单了。
[root@xuexi 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中的内容。
[root@xuexi test]# cat test.txt djklasdjk
使用默认算法加解密:其实并非加密,只是进行了重新编码,因此密码都不需要。
[root@xuexi test]# openssl enc -a - [root@xuexi test]# ZGprbGFzZGprCg== /*加密后的结果*/ [root@xuexi test]# openssl enc -a -d - djklasdjk /*解密后的结果和加密前结果一样*/
使用des3加密算法加密:
[root@xuexi test]# openssl enc -a -des3 - enter des-ede3-cbc encryption password: /*输入的密码是123456*/ Verifying - enter des-ede3-cbc encryption password: [root@xuexi test]# openssl enc -a -des3 -d - -k /*指定密码*/ djklasdjk
加密解密指定密码的格式有几种,在man openssl的“PASS PHRASE ARGUMENTS”部分有。这里的-k 123456对应的是-pass pass:123456。
加密时加入一点盐吧。其实不写时默认就已经加入了,只不过是加入随机盐值。使用-S可以指定盐的值。但是盐的值只能是16进制范围内字符的组合,即"0-9a-fA-F"的任意一个或多个组合。
[root@xuexi test]# openssl enc -a -des3 -S -k [root@xuexi test]# U2FsdGVkX1///wAAAAAAAJuaM/xIiTLv7s+qaaRV23M= [root@xuexi test]# openssl enc -a -des3 -d -S -k djklasdjk [root@xuexi test]# openssl enc -a -des3 -d - -k /*解密不指定salt也一样的*/ djklasdjk
使用-p和-P看看加解密时相关的参数吧。
[root@xuexi test]# openssl enc -a -des3 -d - -k -p salt=FFFF000000000000 key=BFC6625C1427E898AD4E1C0A9E6E850CC0178DC631D2C253 iv =55C687D7CA5F3444 djklasdjk
其中key就是-k指定的password运算后的固定长度的值,加解密工具不会直接使用-k指定的密码进行加密,而是先将该指定密码运算得到固定长度的值,使用该值进行数据加密。因此enc伪命令还有一个“-K”选项,就是用于显示指定固定长度值的。
那么这个固定长度的值是怎么计算的呢?这就是-md选项指定的单向加密的作用了,对密码加密时还会将salt加入运算,所以不指定-S选项时因为随机salt的原因得到的key一定是不一样的。默认-md指定的是md5算法。
[root@xuexi test]# openssl enc -a -des3 -S -p -md md5 salt=FFFF000000000000 key=BFC6625C1427E898AD4E1C0A9E6E850CC0178DC631D2C253 iv =55C687D7CA5F3444 U2FsdGVkX1///wAAAAAAAJuaM/xIiTLv7s+qaaRV23M=
[root@xuexi test]# openssl enc -a -des3 -S -p salt=FFFF000000000000 key=BFC6625C1427E898AD4E1C0A9E6E850CC0178DC631D2C253 iv =55C687D7CA5F3444 U2FsdGVkX1///wAAAAAAAJuaM/xIiTLv7s+qaaRV23M=
可见,salt一样,密码一样,算法一样,得到的key一样,加密的数据结果就一样。
[root@xuexi test]# openssl enc -a -des3 -S -p -md sha512 salt=FFFF000000000000 key=770AAF671702ADEB8F8828A6C5EA459675426D5495CF0BC5 iv =6AE106C6E4A8C3A1 U2FsdGVkX1///wAAAAAAADZi5iLwmAjsrZpYppm3vm4=
salt一样,密码一样,算法不一样,key就不一样了,key不一样,加密的数据结果就不一样。
7.openssl enc的更多相关文章
- openssl enc 加解密
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...
- openssl enc(对称加密)
openssl系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html 对称加密工具.了解对称加密的原理后就很简单了,原理部分见下文. openss ...
- Openssl enc命令
一.简介 enc - 对称加密例程,使用对称密钥对数据进行加解密,特点是速度快,能对大量数据进行处理.算法有流算法和分组加密算法,流算法是逐字节加,由于其容易被破译,现在已很少使用:分组加密算法是将数 ...
- (9) openssl enc(对称加密)
对称加密工具,了解对称加密的原理后就很简单了,原理部分见下文. openssl enc -ciphername [-in filename] [-out filename] [-pa ...
- openssl 对称加密算法enc命令详解
1.对称加密算法概述 openssl的加密算法库提供了丰富的对称加密算法,我们可以通过openssl提供的对称加密算法指令的方式使用,也可以通过调用openssl提供的API的方式使用. openss ...
- openssl用法详解
OpenSSL 是一个开源项目,其组成主要包括一下三个组件: openssl:多用途的命令行工具 libcrypto:加密算法库 libssl:加密模块应用库,实现了ssl及tls openssl可以 ...
- openssl大纲
1.加密和SSL机制:http://www.cnblogs.com/f-ck-need-u/p/6089523.html 2.openssl命令总指挥:http://www.cnblogs.com/f ...
- Linux的加密认证功能以及openssl详解
一.详细介绍加密.解密技术 现在的加密/解密技术主要有三种:对称加密,非对称加密,和单向加密 这三种加密解密技术的组合就是现在电子商务的基础,它们三个有各自最适合的领域,而且所要完成的功能也是不同的, ...
- openssl命令用法
openssl命令 配置文件:/etc/pki/tls/openssl.cnf 命令格式: openssl command [ command_opts ] [ command_args ] 众多子命 ...
随机推荐
- ubuntu中常用软件的安装
1.有道词典 1.百度有道词典,进入有道首页,点"下载词典客户端",下载对应版本. 2.打开终端,进入下载目录,输入sudo dpkg -i youdao-dict_1.0.2~u ...
- HBase设计与开发性能优化(转)
本文主要是从HBase应用程序设计与开发的角度,总结几种常用的性能优化方法.有关HBase系统配置级别的优化,这里涉及的不多,这部分可以参考:淘宝Ken Wu同学的博客. 1. 表的设计 1.1 Pr ...
- 对c语言中malloc和free函数的理解
最近在复习c语言的时候再次用到了malloc函数和free函数,此处着讲解一下自己对这两个函数的理解和认识. 一. malloc函数和free函数的基本概念和基本的用法 对于malloc函数: 1. ...
- 主成分分析(PCA)特征选择算法详解
1. 问题 真实的训练数据总是存在各种各样的问题: 1. 比如拿到一个汽车的样本,里面既有以“千米/每小时”度量的最大速度特征,也有“英里/小时”的最大速度特征,显然这两个特征有一个多余. 2. 拿到 ...
- Intent传递List和Object和List<Object>
一.传递List 传递List<String>的方法 小技巧,List<object> 可以使用json 转为 List<string>,就可以使用 List< ...
- 【HOW】如何限制Reporting Services报表导出功能中格式选项
Reporting Services报表导出功能中缺省会提供多种导出格式选项,但很多情况下不需要全部的格式选项,因此需要对这些选项进行限制.下面我们以SQL Server 2008 R2为例来说明对这 ...
- XData -–无需开发、基于配置的数据库RESTful服务,可作为移动App和ExtJS、WPF/Silverlight、Ajax等应用的服务端
XData -–无需开发.基于配置的数据库RESTful服务,可作为移动App和ExtJS.WPF/Silverlight.Ajax等应用的服务端 源起一个App项目,Web服务器就一台,已经装了 ...
- Android安装apk时报错:INSTALL_FAILED_NO_MATCHING_ABIS
问题背景 OS:无关 AS:无关 Genymotion:2.5.2 Virtual Device:Google Nexus 5 - 5.1.0 - API 22 原因分析 CPU架构不符 解决方案 对 ...
- 集成IC刷卡器经验
因为一系列的原因,IC刷卡器要渐渐地取代磁条刷卡器.公司在这方面也是需要跟进的,在我负责集成IC刷卡器到应用程序的过程中,积累了些经验,现在分享下. 第一:无论是磁条还是IC刷卡器都是刷卡器的一种,所 ...
- ZAM 3D 制作简单的3D字幕 流程(一)
本文原地址-> http://www.cnblogs.com/yk250/p/5663048.html 效果参考图:请查阅 http://www.cnblogs.com/yk250/p/5662 ...