将以前发的2个加密脚本来了个合二为一,采用了按位异或和按位取反算法,可以自定义初始密文或增加密码位数从而创造出与从不同的密码。呵呵,这种加密法的应用面应该很广吧
#!/bin/ksh
#结合按位异或及取反加密数字的shell V050925
trap "tput sgr0 ; echo " 0 1 2 3 9 15
tput bold
clear
passstr1='8' #增加的密文第一位,可设为1位除0以外的整数,即 1-9
passstr2='abcdefghij' #最终的密文代码,可设为任意不重复的10位英文字符,即a-z或A-Z
echo "\n 按位异或及取反加密数字的shell \n"
while :
do
echo -n "\n\n\n 请输入原密码: "
read passwd
test $passwd || { echo ; exit 0 ; }
[[ $passwd == *([0-9]) && ${#passwd} -eq 6 ]] || { echo "\n\n 请输入6位数字 \n" ; read ; clear ; continue ; }
passwd=$(echo $passwd | sed 's/\(.\)\(.\)/\2\1/g')
passwd=$(echo ${passstr1}$passwd)
passwd=$(echo $((~passwd))|cut -c2-)
passwd=$((passwd^111111))
passwd=$(echo $passwd|sed 'y/1234567890/'"$passstr2"'/')
echo "\n 加密密码为: "$passwd
unpasswd=$(echo $passwd|sed 'y/'"$passstr2"'/1234567890/')
unpasswd=$((unpasswd^111111))
unpasswd=$((~-unpasswd))
unpasswd=$(echo $unpasswd | cut -c2-| sed 's/\(.\)\(.\)/\2\1/g')
echo "\n 源密码为: "$unpasswd
done
|