文档章节

用openssl对文件加密及解密

独钓渔
 独钓渔
发布于 2014/07/24 18:25
字数 989
阅读 362
收藏 11
点赞 0
评论 0

Openssl是一个开源的用以实现SSL协议的产品,它主要包括了三个部分:密码算法库、应用程序、SSL协议库。Openssl实现了SSL协议所需要的大多数算法。

下面我将单介绍使用Openssl进行文件的对称加密操作。

一、Openssl支持的加密算法有:
-aes-128-cbc -aes-128-cfb -aes-128-cfb1
-aes-128-cfb8 -aes-128-ecb -aes-128-ofb
-aes-192-cbc -aes-192-cfb -aes-192-cfb1
-aes-192-cfb8 -aes-192-ecb -aes-192-ofb
-aes-256-cbc -aes-256-cfb -aes-256-cfb1
-aes-256-cfb8 -aes-256-ecb -aes-256-ofb
-aes128 -aes192 -aes256
-bf -bf-cbc -bf-cfb
-bf-ecb -bf-ofb -blowfish
-cast -cast-cbc -cast5-cbc
-cast5-cfb -cast5-ecb -cast5-ofb
-des -des-cbc -des-cfb
-des-cfb1 -des-cfb8 -des-ecb
-des-ede -des-ede-cbc -des-ede-cfb
-des-ede-ofb -des-ede3 -des-ede3-cbc
-des-ede3-cfb -des-ede3-ofb -des-ofb
-des3 -desx -desx-cbc
-rc2 -rc2-40-cbc -rc2-64-cbc
-rc2-cbc -rc2-cfb -rc2-ecb
-rc2-ofb -rc4 -rc4-40

二、Openssl加密指令语法:

SYNOPSIS
openssl enc -ciphername [-in filename] [-out filename] [-pass arg] [-e]
[-d] [-a] [-A] [-k password] [-kfile filename] [-K key] [-iv IV] [-p]
[-P] [-bufsize number] [-nopad] [-debug]

说明:
-chipername选项:加密算法,Openssl支持的算法在上面已经列出了,你只需选择其中一种算法即可实现文件加密功能。
-in选项:输入文件,对于加密来说,输入的应该是明文文件;对于解密来说,输入的应该是加密的文件。该选项后面直接跟文件名。
-out选项:输出文件,对于加密来说,输出的应该是加密后的文件名;对于解密来说,输出的应该是明文文件名。
-pass选项:选择输入口令的方式,输入源可以是标准输入设备,命令行输入,文件、变量等。
-e选项:实现加密功能(不使用-d选项的话默认是加密选项)。
-d选项:实现解密功能。
-a和-A选项:对文件进行BASE64编解码操作。
-K选项:手动输入加密密钥(不使用该选项,Openssl会使用口令自动提取加密密钥)。
-IV选项:输入初始变量(不使用该选项,Openssl会使用口令自动提取初始变量)。
-salt选项:是否使用盐值,默认是使用的。
-p选项:打印出加密算法使用的加密密钥。

三、案例:

1. 使用aes-128-cbc算法加密文件:
openssl enc -aes-128-cbc -in install.log -out enc.log
(注:这里install.log是你想要加密的文件,enc.log是加密后的文件,回车后系统会提示你输入口令)

2. 解密刚刚加密的文件:
openssl enc -d -aes-128-cbc -in enc.log -out install.log
(注:enc.log是刚刚加密的文件,install.log是解密后的文件,-d选项实现解密功能)

3.加密文件后使用BASE64格式进行编码:
openssl enc -aes-128-cbc -in install.log -out enc.log -a

4.使用多种口令输入方式加密:
openssl enc -des-ede3-cbc -in install.log -out enc.log -pass pass:111111

(这种方式的好处是你可以把它写入到脚本中,自动完成加密功能,不使用pass选项默认系统会提示输入口令,并且确认,是需要人工操作的)

四、Openssl的功能还远不只于此,感兴趣的朋友可以参考Openssl的手册学习。在Linux系统中你可以通过:man openssl 快速获得帮助文件。

例:对文件file.tar.gz进行加密,密码为123456
openssl des3 -salt -k 123456 -in file.tar.gz -out file.tar.gz.des3

对file.tar.gz.des3 解密
openssl enc -des3 -d -in file.tar.gz.des3 -out file.tar.gz

 

在当前目录下有一个pma目录的文件夹:

1、使用tar对文件压缩加密:
# tar -zcvf - pma|openssl des3 -salt -k password | dd of=pma.des3
完成将得到一个pma.des3的打包文件,用你设置的密码替换password。

2、使用tar对加密文件解压:
# dd if=pma.des3 |openssl des3 -d -k password|tar zxf -
注意:命令最后有”-”,它将释放所有的文件。其中-k password可以不使用,这样执行完命令后会提示你输入密码,加上-k参数表示在程序中自动验证密码。

 

本文转载自:http://www.2cto.com/Article/201107/97405.html

共有 人打赏支持
独钓渔
粉丝 47
博文 373
码字总数 142587
作品 0
沙坪坝
系统管理员
Android外部文件加解密及应用实践

有这样的应用场景,当我们把一些重要文件放到asset文件夹中时,把.apk解压是可以直接拿到这个文件的,一些涉及到重要信息的文件我们并不想被反编译拿去,这个时候需要先对文件进行加密,然后...

C6C ⋅ 05/08 ⋅ 0

数字证书(1)

工作原理 数字证书采用公钥体制,即利用一对互相匹配的密钥进行加密、解密。每个用户自己设定一把特定的仅为本人所知的私有密钥(私钥),用它进行解密和签名;同时设定一把公共密钥(公钥)...

wbf961127 ⋅ 2017/11/08 ⋅ 0

openssl的应用及私有CA相关内容

以CA为核心生成的一套安全架构体系我们称之为: PKI:Public Key Infrastructure,公钥基础设施;其包含的内容: 1.签证机构:CA 2.证书注册机构:RA 3.证书吊销列表:CRL 4.证书存取库:CR ...

狐狸和鳄鱼 ⋅ 04/16 ⋅ 0

基于HTTPS的安全机制的研究(一)

1 问题提出 现在广泛使用的HTTP协议采用的是一种明文传输的方式,因此通信双方的数据在网络上传输是十分不安全的。 2 解决方案 一种简单的解决方案就是对传输的数据进行加密处理。 目前流行的...

算法与编程之美 ⋅ 2016/12/09 ⋅ 4

加密-数字信封-完整性验证-数字签名-数据加解密及身份认证流程

上回说到CA这个我们结合实例具体说下网络安全加密-数字信封-完整性验证-数字签名-数据加解密及身份认证流程: 在说之前我们首先要明白两个概念数字信封和签名 数字信封;明文用对称加密 私钥用...

日久不生情 ⋅ 2017/11/15 ⋅ 0

安卓应用安全指南 5.6.3 密码学 高级话题

5.6.3 密码学 高级话题 原书:Android Application Secure Design/Secure Coding Guidebook 译者:飞龙 协议:CC BY-NC-SA 4.0 5.6.3.1 选择加密方法 在上面的示例代码中,我们展示了三种加密...

apachecn_飞龙 ⋅ 04/05 ⋅ 0

Spartacus勒索软件分析

     Spartacus是一个比较直接的勒索软件样本,使用了ShiOne,Blackheart等过去的一些勒索软件的技术和代码。但是该恶意软件与这些勒索软件和攻击单元没有直接的关系。   Satyr和Black...

嘶吼RoarTalk ⋅ 05/06 ⋅ 0

安卓应用安全指南 5.6.1 密码学 示例代码

5.6.1 密码学 示例代码 原书:Android Application Secure Design/Secure Coding Guidebook 译者:飞龙 协议:CC BY-NC-SA 4.0 针对特定用途和条件开发了各种加密方法,包括加密和解密数据(...

apachecn_飞龙 ⋅ 04/05 ⋅ 0

理解 RSA 算法

Public-key Cryptography 简介 Public-key cryptography (公开密钥加密) 又称 asymmetric cryptography (非对称加密),即存在两把不同的密钥,分别称为公钥 Pu 和私钥 Pr,公钥通常用来加密明...

koala bear ⋅ 2016/02/11 ⋅ 0

互联网什么是SSL证书?什么是HTTPS?

互联网什么是SSL证书?什么是HTTPS? 什么是SSL证书?您每次访问我们的网站时都会在您的URL栏中看到HTTPS。那个符号有意义。这不仅仅是一些随机的,在互联网上它意味着什么。 挂锁是表示已在...

优惠券发放 ⋅ 前天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

从 Confluence 5.3 及其早期版本中恢复空间

如果你需要从 Confluence 5.3 及其早期版本中的导出文件恢复到晚于 Confluence 5.3 的 Confluence 中的话。你可以使用临时的 Confluence 空间安装,然后将这个 Confluence 安装实例升级到你现...

honeymose ⋅ 今天 ⋅ 0

用ZBLOG2.3博客写读书笔记网站能创造今日头条的辉煌吗?

最近两年,著名的自媒体网站今日头条可以说是火得一塌糊涂,虽然从目前来看也遇到了一点瓶颈,毕竟发展到了一定的规模,继续增长就更加难了,但如今的今日头条规模和流量已经非常大了。 我们...

原创小博客 ⋅ 今天 ⋅ 0

MyBatis四大核心概念

本文讲解 MyBatis 四大核心概念(SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession、Mapper)。 MyBatis 作为互联网数据库映射工具界的“上古神器”,训有四大“神兽”,谓之:Sql...

waylau ⋅ 今天 ⋅ 0

以太坊java开发包web3j简介

web3j(org.web3j)是Java版本的以太坊JSON RPC接口协议封装实现,如果需要将你的Java应用或安卓应用接入以太坊,或者希望用java开发一个钱包应用,那么用web3j就对了。 web3j的功能相当完整...

汇智网教程 ⋅ 今天 ⋅ 0

2个线程交替打印100以内的数字

重点提示: 线程的本质上只是一个壳子,真正的逻辑其实在“竞态条件”中。 举个例子,比如本题中的打印,那么在竞态条件中,我只需要一个方法即可; 假如我的需求是2个线程,一个+1,一个-1,...

Germmy ⋅ 今天 ⋅ 0

Springboot2 之 Spring Data Redis 实现消息队列——发布/订阅模式

一般来说,消息队列有两种场景,一种是发布者订阅者模式,一种是生产者消费者模式,这里利用redis消息“发布/订阅”来简单实现订阅者模式。 实现之前先过过 redis 发布订阅的一些基础概念和操...

Simonton ⋅ 今天 ⋅ 0

error:Could not find gradle

一.更新Android Studio后打开Project,报如下错误: Error: Could not find com.android.tools.build:gradle:2.2.1. Searched in the following locations: file:/D:/software/android/andro......

Yao--靠自己 ⋅ 昨天 ⋅ 0

Spring boot 项目打包及引入本地jar包

Spring Boot 项目打包以及引入本地Jar包 [TOC] 上篇文章提到 Maven 项目添加本地jar包的三种方式 ,本篇文章记录下在实际项目中的应用。 spring boot 打包方式 我们知道,传统应用可以将程序...

Os_yxguang ⋅ 昨天 ⋅ 0

常见数据结构(二)-树(二叉树,红黑树,B树)

本文介绍数据结构中几种常见的树:二分查找树,2-3树,红黑树,B树 写在前面 本文所有图片均截图自coursera上普林斯顿的课程《Algorithms, Part I》中的Slides 相关命题的证明可参考《算法(第...

浮躁的码农 ⋅ 昨天 ⋅ 0

android -------- 混淆打包报错 (warning - InnerClass ...)

最近做Android混淆打包遇到一些问题,Android Sdutio 3.1 版本打包的 错误如下: Android studio warning - InnerClass annotations are missing corresponding EnclosingMember annotation......

切切歆语 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部