UNIX下利用OpenSSL对大文件进行AES加解密

      由于项目需要文件传输过程中对其进行加解密,所以就在网上查找下加解密的相关介绍,最开始采用RSA加解密算法,先是利用RSAEuro折腾了半天编译的环节卡住了(编译报错查不出原因),后面网上发现利用OpenSSL的实现方法比较简单。

      OpenSSL是一款功能强大的加密工具包,它集成了众多密码算法及实用工具。用rsa算法实现加解密很容易,但是只能处理小的数据文件(个人见解),处理大文件数据需要采用其他算法,

      关于RSA算法的相关操作命令可以参考:

http://www.linuxidc.com/Linux/2015-01/112071.htm

http://www.linuxidc.com/Linux/2015-01/112072.htm

http://www.linuxidc.com/Linux/2015-01/112073.htm

      现在介绍下利用OpenSSL的aes算法加解密大数据文件,我写成了shell脚本,如下

      加密encrypt.sh,其中KEYFILE="enc.key"为16位字符的密码文件

#!/bin/sh 
#功能:文件加密 
if [ $# -ne 2 ] 
then
  echo "用法:$0 要加密的文件名 加密后的文件名"
  echo "例如:$0 hello hello.en"
  exit 1 
fi
#flag为输入的加密文件名与加密后的文件名是否一样,1为相同文件名 
flag=0 
KEYFILE="enc.key"
INFILE=$1 
OUTFILE=$2 
if [ -f $INFILE ] 
then
  echo "开始加密$INFILE"
else
  echo "error:文件不存在!!!"
  exit 1 
fi
if [ "$INFILE" = "$OUTFILE" ] 
then
  OUTFILE=$2.TMP 
  flag=1 
fi
#对文件进行加密 
openssl enc -e -aes-128-cbc -kfile $KEYFILE -in $INFILE -out $OUTFILE 
if [ $? -eq 0 ] 
then
    if [ flag -eq 1 ] 
    then
      mv $OUTFILE $INFILE 
      echo "加密完成!生成加密文件为$INFILE"
    else
      echo "加密完成!生成加密文件为$OUTFILE"
    fi
else
    echo "error:加密失败!!!"
fi
exit 0


      解密decrpt.sh

#!/bin/sh 
#功能:文件解密 
if [ $# -ne 2 ] 
then
  echo "用法:$0 要解密的文件名 解密后的文件名"
  echo "例如:$0 hello.en hello.de"
  exit 1 
fi
flag=0 
KEYFILE="enc.key"
INFILE=$1 
OUTFILE=$2 
if [ -f $INFILE ] 
then
  echo "开始解密$INFILE"
else
  echo "error:文件不存在!!!"
  exit 1 
fi
if [ "$INFILE" = "$OUTFILE" ] 
then
  OUTFILE=$2.TMP 
  flag=1 
fi
#对文件进行解密 
openssl enc -d -aes-128-cbc -kfile $KEYFILE -in $INFILE -out $OUTFILE 
if [ $? -eq 0 ] 
then
    if [ flag -eq 1 ] 
    then
      mv $OUTFILE $INFILE 
      echo "解密完成!生成解密文件为$INFILE"
    else
      echo "解密完成!生成解密文件为$OUTFILE"
    fi
else
    echo "error:解密失败!!!"
fi
exit 0


      通过OpenSSL提供FTP+SSL/TLS认证功能,并实现安全数据传输 http://www.linuxidc.com/Linux/2013-05/84986.htm

      利用OpenSSL签署多域名证书 http://www.linuxidc.com/Linux/2014-10/108222.htm

      OpenSSL 的详细介绍请点这里
      OpenSSL 的下载地址请点这里
















评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值