2013-08-07 69 views
1

使用下面的脚本文件进行加密加密多个文件中bash脚本

#!/bin/bash 
# crypten - a script to encrypt files using openssl 

FNAME=$1 

if [[ -z "$FNAME" ]]; then 
echo "crypten <name of file>" 
echo " - crypten is a script to encrypt files using des3" 
exit; 
fi 

openssl des3 -salt -in "$FNAME" -out "$FNAME.des3" 

这种只允许一个文件,一个文件出来,我希望能够做的是一个批处理文件加密一定的延伸。即如果我有一个文件夹与1.text 2.text 3.text 4.text我希望能够做crypten * .text,它会将所有四个文件转换为.des3

+1

我想你知道,3DES被认为是太弱,无法提供多少安全性(但也是由美国NIST下批准FIPS-140直到2030年,此时门把手将具有足够的计算能力来破解它)。 – msw

回答

1

迭代位置参数;使用$#检查是否收到至少一个,并按[email protected](引用)检索每个顺序。

if (($# == 0)); then 
    echo "crypten <file1> [ <file2> ... ]" 
    echo " - crypten is a script to encrypt file using des3" 
    exit 
fi 
for FNAME in "[email protected]"; do 
    openssl des3 -salt -in "$FNAME" -out "$FNAME.des3" 
done 
+0

现货很多谢谢chepner – Lurch

2

使用Unix哲学 - 为一个特定的任务一个工具。
你想加密一个文件,没关系 - 你可以使用你自己的脚本。
你想在目录中的每个文件应用脚本 - xargs做的很好:

ls -1 dir_name/*.text | xargs -d '\n' -i crypten {} 
+1

不要分析'ls'。这将打破包含换行符的文件名称。 – chepner

+0

@chepner谢谢,你对(+1)。现在应该会更好。 –

+0

这没有帮助。您不能区分属于文件名称的换行符和用于分隔'ls'输出中的条目的换行符。 – chepner