首页 > 学技术 > 技术网文 > Linux Shell > 正文

[精彩] [原创]按位异或及取反加密数字的脚本


来源 chinaunix.net 酷勤网整理

将以前发的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






原文链接:http://bbs.chinaunix.net/viewthread.php?tid=621264
转载请注明作者名及原文出处



收藏本页到: