我有一个 Python 命令可以生成字符串的 SHA-1 哈希的 URL 安全 base-64 编码:
>>> import base64
>>> import sha
>>> base64.urlsafe_b64encode((sha.new("abc").digest()))
'qZk-NkcGgWq6PiVxeFDCbJzQ2J0='
我想在 bash shell 中做同样的事情,但我遇到了问题:
me:~$ echo -n "abc" | sha1sum | sed 's/ .*//'
a9993e364706816aba3e25717850c26c9cd0d89d
me:~$ echo -n "abc" | sha1sum | sed 's/ .*//' | base64
YTk5OTNlMzY0NzA2ODE2YWJhM2UyNTcxNzg1MGMyNmM5Y2QwZDg5ZAo=
我怀疑这是因为 sha1sum 的打印方式(以十六进制格式)。我认为 base64 正在读取 40 个字节,但实际上应该只读取 20 个字节。我尝试通过 iconv 进行管道传输,但没有成功:
me:~$ echo -n "abc" | sha1sum | sed 's/ .*//'
a9993e364706816aba3e25717850c26c9cd0d89d
me:~$ echo -n "abc" | sha1sum | sed 's/ .*//' | base64
YTk5OTNlMzY0NzA2ODE2YWJhM2UyNTcxNzg1MGMyNmM5Y2QwZDg5ZAo=
我应该在这里做什么来获得我期望的输出?
在此先感谢您的帮助!