icq5f7a075d
1.演算法介紹
rsa演算法是一種用數論構造的、基於大合數因子分解困難性的公開金鑰密碼。由於rsa密碼既可用於加密,又可用於數字簽名,安全、易懂,因此rsa密碼已成為目前應用最廣泛的公開金鑰密碼。許多勒索軟體就是使用rsa加密,在沒有私鑰的情況下很難恢復資料。
在正式介紹rsa加密演算法前,我們還需要知道一些數論的概念:
(1)互素關係(互質關係):如果兩個正整數,除了1以外,沒有其他公因子,我們就稱這兩個數是互素關係(互質關係);
(2)乘法逆元(模反元素):如果兩個正整數a和n互質,那麼一定可以找到整數b,使得ab-1被n整除,或者說ab被n除的餘數是1。這時,b就叫做a的乘法逆元(模反元素)。
(3)尤拉函式;任意給定正整數n,計算小於n的正整數中與n互質的數的數目的方式就叫做尤拉函式,以φ(n)表示。如果n是質數,則 φ(n)=n-1 ,因為質數與小於它的每乙個數,都構成互質關係。如果n可以分解成兩個互質的整數之積,n = p1 × p2,則φ(n) =φ(p1p2) = φ(p1)φ(p2)=(p1-1)*(p2-1)。
(4)尤拉定理:如果兩個正整數a和n互質,則n的尤拉函式φ(n)可以讓下面的等式成立:
a^φ(n)=1 (mod n)
有了以上數論的知識,我們就可以理解rsa加密演算法了。
加密演算法描述:
(1)金鑰的產生
a.選兩個保密的大素數(素數又稱質數)p和q;
b.計算n=p*q,φ(n) =(p-1)(q-1);
c.選一整數e,滿足12.rsa24程式逆向
24指的是金鑰長度。
2.1.定位關鍵位置
資料驗證的過程在sub_4029b0中進行,也是rsa計算的過程。
2.2.serial計算
小知識點:計算字串長度:
cldxor eax,eax
or ecx,-0x1 ;ecx=0xffffffff
repne scas byte ptr es:[edi] ; [edi]=字串
not ecx
dec ecx ;計算出字串長度
計算的過程可以用如下**表示:
乙個經典的 m e mod n 演算法:
m=7167622 #m的值不固定3.總結rsa的學習需要較高的理論基礎,但是rsa實際上很簡單,反彙編出的程式流程簡單,很容易識別。
文末照例來點彩蛋:
import gmpy2本文中的所有程式請在虛擬機器中執行。n=12790891l
e=9901
c1=8483678
c2=5666933
q=1667
p=7673
d=gmpy2.invert(e, (p-1)*(q-1))
m1=pow(c1,d,n)
m2=pow(c2,d,n)
print m1,m2
《加密與解密實戰攻略》
《應用密碼學》 曹天傑著
演算法逆向1——簡單演算法逆向
演算法逆向2——crc32識別
演算法逆向3——md5演算法識別
演算法逆向4——sha-1識別
演算法逆向5——base64識別
>>>>>>《黑客入門必備技能》 帶你入坑,和逗比表哥們一起聊聊黑客的事兒,他們說高精尖的技術比農藥都好玩!
加密演算法逆向
最近勒索軟體盛行,果斷有逆向加密演算法的需求啊,可是小白乙個真心逆向起來十分的費力。下面記錄幾個逆向演算法的關鍵點和關鍵步驟。1 定位加密演算法的位置 加密演算法有幾個關鍵點 初始向量 vi 加密金鑰 key 加密演算法 輸入資料 輸出資料。所以分析過程中要找出這幾個關鍵點,一般關注點是輸入資料和輸...
2 fec編譯碼 rs演算法
fec是一種編碼技術,它可以將n份原始資料,增加m份資料,並能通過n m份中的任意n份資料,還原為原始資料。即如果有任意小於等於m份的資料失效,仍然能通過剩下的資料還原出來。reed solomon利用范特蒙矩陣或者柯西矩陣的特性來實現糾錯碼的功能。下面著重介紹reed solomon編譯碼原理 一...
Python 最大逆向匹配演算法
第三次重新寫這個演算法,每次寫都有新的體會。這次最大的感受是把訪問資料夾的包都熟悉了一下,os和shutil。後者用來刪除整個檔案,這種破壞力還是慎用吧。def mk new dir filename 新建乙個資料夾,如果存在,則刪除並重建。if os.path.exists filename is...