shell几种字符串加密解密的方法

在编写脚本时避免不了使用密码,所以为了增强安全性,需要使用加密解密技术。本文记录几种加密解密的方法。

Python 与 Bash Shell 的结合

这个命令会让你输入一个字符串,然后会再输出一串加密了的数字.

1
2
3
4
# 加密代码[照直输入]:
python -c 'print reduce(lambda a,b: a*256+ord(b), raw_input("string: "), 0)'
# 解密代码[数字后+P]:
dc -e 输出的数字P

纯 Bash Shell, 含 VIM 的xxd

用 gtalk@gmail.com 作为明文,加密分两步也可以一步。

1
2
3
4
5
6
7
8
# 加密代码:
echo "gtalk@gmail.com" |xxd -ps -u
# 得到:6774616C6B40676D61696C2E636F6D0A
echo "ibase=16; 6774616C6B40676D61696C2E636F6D0A" |bc
# 得到:137514765985002236391382606438443478282
一步加密代码:
echo "ibase=16; $(echo "gtalk@gmail.com" |xxd -ps -u)" |bc
# 得到:137514765985002236391382606438443478282

Base64 编码

1
2
3
4
5
6
# 加密代码:
echo "gtalk@gmail.com" |base64 -i
# 得到:Z3RhbGtAZ21haWwuY29tCg==
# 解密代码:
echo "Z3RhbGtAZ21haWwuY29tCg==" |base64 -d
# 得到:gtalk@gmail.com

Base64 编码,这个很好很强大,适合写加密脚本

实现使用 base64 加密、解密字符串并赋值给变量。网上绝大多数是使用 echo 管道实现 加密和解密字符串的输出。

1
2
3
4
5
pwd=$( base64 -d <<< MQo= )  # 解码
in=$( base64 <<< "123456") # 加密
# 或者
test=$(printf "%s""123456" | base64) # 加密
test=$(printf "%s" MTIzNDU2| base64 -d) # 解密

参考文章