来源:
https://blog.csdn.net/armlinuxww/article/details/115479401
https://www.qetool.com/scripts/view/22012.html
目标:
python如下代码的bash实现
signature = base64.encodestring(hmac.new(client_secret, string2Sign, hashlib.sha1).digest()).replace("\n", "")
bash实现
echo "${client_secret}"|openssl sha1 -binary -hmac ${string2Sign}|base64
其中 openssl sha1 -binary -hmac ${string2Sign}
sha1为信息完整性摘要的一种
# echo "add"|openssl dgst -sha1 -binary -hmac "aaa"|base64
6UbANJJ0F5LLE7tPy/zcKvRwxic=
# echo "add"|openssl sha1 -binary -hmac "aaa"|base64
6UbANJJ0F5LLE7tPy/zcKvRwxic=
[参考:
OpenSSL实现了5种信息摘要算法,分别是MD2、MD5、MDC2、SHA(SHA1)和RIPEMD
。SHA算法事实上包括了SHA和SHA1两种信息摘要算法,此外,OpenSSL还实现了DSS标准中规定的两种信息摘要算法DSS和DSS1。
摘要一般有两个作用:1)做信息完整性校验;2)保存密码,有些密码是直接在数据库中采用MD5(真实密码值)保存的,有的还进行加盐处理,使其难以破解,这样密码只能重置,无法告诉你原始过程,因为摘要是不可逆的。
[-md5|-md4|-md2|-sha1|-sha|-mdc2|-ripemd160|-dss1] :指定一种摘要算法
-out filename:将摘要的内容保存到指定文件中
openssl dgst -md5 [-hex默认16进制] /PATH/SOMEFILE
openssl dgst -md5 testfile
MAC: Message Authentication Code,单向加密的一种延伸应用,用于实现网络通
简单示例,对文件1进行求md5摘要:
]