某知名论坛看到一篇很好的文章,言简意赅,三言两语就扫清了我的一块知识盲区,为记录并反复温故知新,就转载到自己的账号下。如有冒犯原著作者,请联系我。
原文如下:
前言
近日,由于项目需要,再次让我碰到了这个名为:Signature的数字签名算法,因之前曾有网友私聊我某站的sig(Signature的简称,亦可能为sign)怎么还原它的算法,所以我想打算就此写一篇文章并分享下它的加密过程以及调试思路,注:本文仅限于学术交流之用,并未特地针对某站或涉嫌任何非法操作的行为,请自行斟酌。
Digital Signature是什么?
译为:数字签名,我们可以想象一下,在一个没有电脑、也没有手机的远古时代里,人们日常交互均采用书信的形式,它们往往在邮递/发送信件给好友之前,都会在署上自己的信息,兹以证明该信件是由自己送出的。
Signature的组成
在了解了数字签名后,是时候该来探讨下 Signature的算法了,那么我们常见的sig、sign、或直接就是signature算法与签名的数字签名有啥区别吗?
关于Sign的误区
看到这里可能大家会有个疑问了,不是说数字签名只有私钥持有者才能解密吗,那么那些爬虫是如何得到数据的?
Sign加密算法入口定位
一般来说要找到签名算法的入口大部分也算较为简单的,先不说入口,我们单从特性来讲,它们基本都是由hash + rsa组成,所以我们找到入口后,基本上可以说已经完成80%的解密了,至于如何定位入口,可以使用快速定位法(关键字、xhr断点、hook)等形式,具体可以参考我往期的文章。前面已经说了,本篇文章不涉及针对任何网站采取任何破坏形式,所以这里就不给大家做演示,基本上遵循以上的法则基本可以取得加密算法,但有一种情况除外,那就是APP的,对于APP我建议大家先到网页端分析一下是否也有该字段,如果有,大可直接从网页端研究,否则,可能需要从app逆向开始啦,最后祝大家好运!