password_encryption.sh 脚本 ,
是一个使用shell 命令写的脚本;是对明文密码加密的小工具;基于aes-256进行封装的 ;解决密码繁多的困扰,使用该脚本,只需记住一个密码,其余密码进行加密存储,记不住时,可再用该工具解密;
需要 openssl 依赖服务,一般linux 上都可有该服务
Centos6、7、 Ubuntu 20.04 LTS 上测试正常使用
[root@centos-mini ~]# vim password_encryption.sh
#!/bin/bash
#
#
# Author: Hao Chuanfeng
# Date of production:-7-17
# Update: -5-24
# Description: For password encryption, you don't need to remember many passwords, just one password
# 描述:用于密码加密,便于存放,但不会被人盗取
#颜色
HASTTY=1
red_echo () { [ "$HASTTY" != "1" ] && echo "$@" || echo -e "\033[031;1m$@\033[0m"; }
green_echo () { [ "$HASTTY" != "1" ] && echo "$@" || echo -e "\033[032;1m$@\033[0m"; }
yellow_echo () { [ "$HASTTY" != "1" ] && echo "$@" || echo -e "\033[033;1m$@\033[0m"; }
blue_echo () { [ "$HASTTY" != "1" ] && echo "$@" || echo -e "\033[034;1m$@\033[0m"; }
purple_echo () { [ "$HASTTY" != "1" ] && echo "$@" || echo -e "\033[035;1m$@\033[0m"; }
bred_echo () { [ "$HASTTY" != "1" ] && echo "$@" || echo -e "\033[041;1m$@\033[0m"; }
bgreen_echo () { [ "$HASTTY" != "1" ] && echo "$@" || echo -e "\033[042;1m$@\033[0m"; }
byellow_echo () { [ "$HASTTY" != "1" ] && echo "$@" || echo -e "\033[043;1m$@\033[0m"; }
bblue_echo () { [ "$HASTTY" != "1" ] && echo "$@" || echo -e "\033[044;1m$@\033[0m"; }
bpurple_echo () { [ "$HASTTY" != "1" ] && echo "$@" || echo -e "\033[045;1m$@\033[0m"; }
bgreen_echo () { [ "$HASTTY" != "1" ] && echo "$@" || echo -e "\033[042;34;1m$@\033[0m"; }
#用法
Usage () {
red_echo "ERROR"
echo -e "Usage: $0 { -e 明文密码| -d 加密密码 }"
echo -e "*********************** selection ***********************"
echo -e "参数选项:"
blue_echo "\t-e ecrypt 对明文密码加密(不能与 -d 连用)"
blue_echo "\t-d decrypt 对加密密码还原为明文(不能与 -e 连用)\n"
}
#传参
Parameter () {
while getopts ":e:d:h" opt
do
case $opt in
e)
EPASSWD=$OPTARG
#echo "参数e的值$OPTARG"
;;
d)
DPASSWD=$OPTARG
#echo "参数d的值$OPTARG"
;;
h)
Usage
exit 1
;;
*)
Usage
exit 2
esac
done
[ "$EPASSWD" == "" -a "$DPASSWD" == "" ] && Usage && exit 3
[ "$EPASSWD" != "" -a "$DPASSWD" != "" ] && Usage && exit 4
[ $# -eq 0 ] && Usage
}
#密码(salt值)
Password () {
#echo -e "请输入密码: \c"
salt=''
while : ;
do
read -n 1 -s -p "" pw
if [ $pw ]; then
salt=${salt}$pw
# 如果不需要显示 * ,把这条命令删掉即可
echo -e "*\c"
else
echo
break
fi
done
}
#密码加密
mi_ma_jia_mi () {
for n in 1 2;do
[ $n -eq 1 ] && echo -e "请输入加密密码: \c"
[ $n -eq 2 ] && echo -e "请再次输入加密密码: \c"
Password
export salt_$n="$salt"
done
# 两次输入的判断密码一致性
[ "${salt_1}" != "${salt_2}" ] && red_echo "两次输入的密码不一致" && exit 3
# 密码的位数不能小于8
length=`expr length "$salt"`
(( $length < 8 )) && red_echo "密码不能小于8位数" && exit 1
# 密码中必须存在数字、字母
salt_check=$(echo $salt|sed s'/./& /g')
for n in $salt_check;do
for m in {a..z} {A..Z};do
[ "$n" == "$m" ] && word=$n
done
for m in {1..9};do
[ "$n" == "$m" ] && num=$n
done
done
[ "$word" == "" ] && echo 密码中必须存在数字、字母 && exit 4
[ "$num" == "" ] && echo 密码中必须存在数字、字母 && exit 5
PASSWD=`echo "$1" | openssl enc -aes-256-cbc -a -salt -pass pass:$salt` && green_echo "加密后的密码:$PASSWD"
}
# 密码解密
mi_ma_jie_mi () {
echo -e "请输入解密密码: \c"
Password
a=`echo $1|openssl enc -aes-256-cbc -a -d -salt -pass pass:$salt 2>/dev/null`
[ "$a" == "" ] && red_echo "输入的密码不正确" || green_echo "明文密码:$a"
}
# 调用函数
Parameter $@
[ "$EPASSWD" != "" ] && mi_ma_jia_mi $EPASSWD
[ "$DPASSWD" != "" ] && mi_ma_jie_mi $DPASSWD
password_encryption.sh 使用用法, 解密,加密 使用案例:
#使用方法
[root@centos-mini ~]# bash password_encryption.sh
ERROR
Usage: password_encryption.sh { -e 明文密码| -d 加密密码 }
*********************** selection ***********************
参数选项:
-e ecrypt 对明文密码加密(不能与 -d 连用)
-d decrypt 对加密密码还原为明文(不能与 -e 连用)
#加密密码
[root@centos-mini ~]# bash password_encryption.sh -e 123456
请输入加密密码: **********
请再次输入加密密码: **********
加密后的密码:U2FsdGVkX195bV5j35v87+HM+jkQhtDs48c65s+MIds=
#解密密码
[root@centos-mini ~]# bash password_encryption.sh -d U2FsdGVkX195bV5j35v87+HM+jkQhtDs48c65s+MIds=
请输入解密密码: **********
明文密码:123456
[root@centos-mini ~]#