zoukankan      html  css  js  c++  java
  • Linux下OpenSSL加密解密压缩文件(AES加密压缩文件)

    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选项默认系统会提示输入密码并且确认,是需要人工操作的。)

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

    6、使用CBC模式、PKCS5Padding补码方式的AES(128位)加密算法对压缩文件进行加密解密

    openssl enc -e -aes-128-cbc -iv 0102030405060708 -K 1234567890123456 -in input.xml -out output.xml(加密)
    openssl enc -aes-128-cbc -d -in input.xml -out output.xml -K 1234567890123456 -iv 0102030405060708(解密)

    7、php中执行Linux命令

    $ml = "openssl enc -e -aes-128-cbc -iv ".$iv." -K ".$secret_key." -in ".$inname." -out ".$outname;
    //参考地址: http://blog.csdn.net/qq_27988539/article/details/77921121?locationNum=9&fps=1
    exec($ml,$res,$status); //执行命令 报错了删除/usr/local/php/etc/php.ini disable_functions exec命令

    exec()
    原型:string exec (string command [, string array [, int return_var]])
    exec ()函数与system()类似,也执行给定的命令,但不输出结果,而是返回结果的最后一行。虽然它只返回命令结果的最后一行,但用第二个参数array 可以得到完整的结果,方法是把结果逐行追加到array的结尾处。所以如果array不是空的,在调用之前最好用unset()最它清掉。只有指定了第二 个参数时,才可以用第三个参数,用来取得命令执行的状态码。
    例子:
    复制代码 代码如下:

    <?php
    exec("/bin/ls -l");
    exec("/bin/ls -l", $res);
    exec("/bin/ls -l", $res, $rc);
    ?>

    参考地址:http://www.ha97.com/5114.html

  • 相关阅读:
    find the safest road HDU
    分页存储过程
    .NET Core与.NET Framework、Mono之间的关系
    winForm开发
    面试题目总结
    sqlserver锁表、解锁、查看锁表
    架构漫谈(四):如何做好架构之架构切分
    多线程讲解
    递归菜单简单应用
    杂记
  • 原文地址:https://www.cnblogs.com/liruning/p/8609532.html
Copyright © 2011-2022 走看看