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

本文出自 “一阵风” 博客

转载于:https://www.cnblogs.com/yaohunzhanyue/articles/5549871.html

文件加密及解密openssl相关推荐

  1. tkinter实现文件加密和解密

    源代码:https://gitee.com/mydreamambitious/file-encryption-and-decryption 注:这个代码和界面是做好的,但是还在进行优化和美化中.但是在 ...

  2. Java基础篇之利用IO流给文件加密、解密

    目标:给文件加密.解密(最基础版) 注意: a.加密过程:先读取整个目标文件,然后将目标文件写入一个新的文件中,在写入的过程中,每隔几个字符插入一个加密符号(随意定),此时这个新的文件就是加密文件 b ...

  3. (C语言)简单的文件加密和解密程序

    一个简单的文件加密和解密程序 main.c #include <stdio.h> #include <stdlib.h> #include "fun.h"i ...

  4. 文件加密和解密 - 密钥存储

    当我们想要做一次加密系统,或者只是有一个关于这个问题,它是如何保存的加密和解密密钥. 一般认为想要的文件加密和解密,对称算法用于.一般是AES要么DES. 这就存在密钥管理的问题,它是如何? 基本上两 ...

  5. Linux下使用Vim/Vi给文件加密和解密

    本文介绍在Linux下使用Vim/Vi给文件加密和解密的简单方法,Vim的文件加密功能不是很强,但比较实用,因为不必要借助其他软件即可实现. 一. 用 Vim/Vi 加密文件: 用 Vim/Vi 加密 ...

  6. 文件加密和解密软件:AutoCrypt for mac

    为大家推荐一款好用的文件加密和解密软件,AutoCrypt for mac具备强大的AES-256算法,只需点击一下,即可加密并保存在自定义位置,能够轻松帮助用户加密或解密文件,而且autocrypt ...

  7. 利用OpenSSL,用国密SM4算法来给文件加密、解密

    用OpenSSL产生一个随机填充的文件 a.txt ,然后计算这个文件的SHA256摘要.等一下用OpenSSL加密产生 b.txt 再对 b.txt 解密产生c.txt .计算 c.txt 的SHA ...

  8. MD5文件加密和解密

    举个例子: import java.awt.*; import java.awt.event.*;import java.io.*;import java.security.*;import java ...

  9. c语言 文件加密与解密

    本程序是一个c语言的大作业的一部分 是简单的基于给定密钥实现的加密解密程序 希望能给后来人一些参考 文件的传输会有明文和密文的区别,明文发送是不安全的.本题目实现对文件的加密和解密操作,采用的加密算法 ...

最新文章

  1. centos7下端口映射
  2. 潜在语义分析对认知科学的启示
  3. 谁在为网易云音乐2亿用户的即时通讯保驾护航?
  4. linux shell 中文件编码查看及转换方法
  5. FullCalendar 五:FullCalendar应用——编辑与删除日程事件
  6. 使背景图片适应不同分辨率电脑
  7. centos7和centos6 开机 运行级别详解和设置
  8. 【机器学习】概率神经网络(PNN)的python实现
  9. 中国IT行业薪资:与销售相比,程序员真得很“穷”
  10. Java Session 会话技术
  11. Finaldata数据恢复软件官方版
  12. springboot+vue企业员工考勤绩效工资管理系统java
  13. delphi技巧--分离汉字和英文字母
  14. 牛人面对面|专访Testin(云测)总裁徐琨
  15. word 域更新的锁定和解锁
  16. Unity3d-简单AR游戏
  17. mysql数据库网课_中国大学MOOCMysql数据库系统网课答案
  18. Qt6.0高速在线安装 下载极速无需漫长等待
  19. dfc trace performance anaysis
  20. OpenAcc的使用

热门文章

  1. SpringMVC配置项学习笔记
  2. Newtonsoft.json中 linq to json 和序列化哪个快?
  3. WPF 程序最大化,窗口,最小化
  4. K8S的HelloWorld之旅
  5. dll文件的c++制作dll文件的c++制作
  6. 如何使用python导入mat格式的数据并整理
  7. Linux 4.1内核热补丁成功实践
  8. Python--day26--复习
  9. Javascript的setTimeOut()和setInterval()的定时器用法
  10. JAVA中线程同步的方法