用openssl对文件加密及解密

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参数表示在程序中自动验证密码。

用openssl对文件加密及解密,布布扣,bubuko.com

时间: 2024-10-31 16:37:31

用openssl对文件加密及解密的相关文章

java spring中对properties属性文件加密及其解密

原创整理不易,转载请注明出处:java spring中对properties属性文件加密及其解密 代码下载地址:http://www.zuidaima.com/share/1781588957400064.htm 加密类: package com.zuidaima.commons.util; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import

文件加密及解密

1 using System; 2 using System.Collections.Generic; 3 using System.Text; 4 using System.IO; 5 using System.Runtime.Serialization; 6 using System.Security.Cryptography; 7 8 namespace Sky.Decrypt 9 { 10 /// <summary> 11 /// 解密 12 /// </summary>

C#使用RSA证书文件加密和解密示例

原文:C#使用RSA证书文件加密和解密示例 修改MSDN上的示例,使之可以通过RSA证书文件加密和解密,中间遇到一个小问题. Q:执行ExportParameters()方法时,回报CryptographicException:该项不适于在指定状态下使用(Key not valid for use in specified state). A:导入带有私钥的证书时,需要使用"X509KeyStorageFlags"参数标记"私钥可导出". X509Certifica

使用Vi/Vim给文件加密和解密

一. 利用vi加密: 优点:加密后,如果不知道密码,就看不到明文,包括root用户也看不了: 缺点:很明显让别人知道加密了,容易让别人把加密的文件破坏掉,包括内容破坏和删除: vi编辑器相信大家都很熟悉了吧,vi里有一个命令是给文件加密的,举个例子吧: 1) 首先在root主目录/root/下建立一个实验文件text.txt: [[email protected] ~]# vi text.txt 2) 进到编辑模式,输入完内容后按ESC,然后输入:X(注意是大写的X),回车: 3) 这时系统提示

使用openssl进行文件加密

#include <iostream> #include <string> #include <stdlib.h> using namespace std; int main(int argc,char *argv[]) { string cmd = "openssl "; for(int i = 1; i<argc; i++) { cmd +=" "; cmd += argv[i]; } cout << cmd

C# 文件加密和解密

1.加密 using System;using System.Collections.Generic;using System.Text;using System.Runtime.Serialization;using System.IO;using System.Security.Cryptography; namespace Sky.Encrypt{    /// <summary>    /// 加密    /// </summary>    public class Enc

CryptoJS文件加密与解密

import React, { Component } from 'react';import CryptoJS from 'crypto-js/crypto-js'import { Button } from 'antd'; class Encryption extends Component { constructor(){ super(); this.state={ value2:'qqqqqqqqqqqq', encryptioned:'', Decrypted:'' } } compo

xxtea 文件加密与解密

加密 cocos luacompile -s src -d dst_dir -e -b xxxxx -k xxxxx --disable-compile 解密 cocos luacompile -s src -d dst_dir -e -j  -b xxxxx -k xxxxx --disable-compile 说明:cocos默认只支持加密,不支持反向解密, 本人改一下python脚本 使其支持解密. -b 后面接的参数是在文件中可以见的. #!/usr/bin/python # -----

openssl的加密、解密以及构建私有CA

SSL.TLS介绍: SSL:安全套接字(Secure Socket Layer,SSL)协议是Web浏览器与Web服务器之间安全交换信息的协议,提供两个基本的安全服务:鉴别与保密. TLS:安全传输层协议(Transport Layer Security)用于在两个通信应用程序之间提供保密性和数据完整性.该协议由两层组成: TLS 记录协议(TLS Record)和 TLS 握手协议(TLS Handshake).较低的层为 TLS 记录协议,位于某个可靠的传输协议(例如 TCP)上面,与具体