设为首页 加入收藏

TOP

UNIX下利用OpenSSL对大文件进行AES加解密
2015-02-02 14:21:33 来源: 作者: 【 】 浏览:8
Tags:UNIX 利用 OpenSSL 对大 文件 进行 AES 解密

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


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


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


现在介绍下利用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


仅供参考,如有问题请指正,谢谢!


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Linux下mmap函数的一个练习 下一篇使用 Go 语言来提升 Ruby 应用的..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: