最近忙,事比較多,活多了,還要降薪,唉。沒什麼時間看書,將以前的一些技術blog也移到這裡。ntlm在去年年底和今年年初研究過一陣子,寫了總結和例子程式。裡面涉及很多演算法,在網上查了很久。(下面是以前的部落格)最近想實現乙個通過proxy穿越的網路程式設計,將相關的內容進行一下彙總。很多東西來自網路共產主義,也應該為共產主義有所回饋。介紹des演算法之三的實現。
步驟三:獲取最後的加密結果
我們經過了前面的多個步驟,得到了l16和r16,進入我們的最後的步驟:獲取最終結果。
a:32-bit swap
將l16和r16,按r16l16的順序組成乙個新的64位元的資料流。
b:invers initialpermutation
執行反向的序列重排,按下面的序列進行順序重排
|40,8,48,16,56,24,64,32|
|39,7,47,15,55,23,63,31|
|38,6,46,14,54,22,62,30|
|37,5,45,13,53,21,61,29|
|36,4,44,12,52,20,60,28|
|35,3,43,11,51,19,59,27|
|34,2,42,10,50,18,58,26|
|33,1,41,9 ,49,17,57,25|
經過重新排序後得到的64位元的資料就是des最終的加密資料。
static int inverse_ip_p[64] = ;void algorithm_des(in unsigned char * src, in unsigned char *secrect,
out unsigned char * dst)
我們給出幾組驗證資料:
組一:key:56 a2 52 88 34 7a 34 8a
plain text:kgs!@#$%
des加密結果:c2 34 13 a8 a1 e7 66 5f
組二:key :31 31 31 31 31 31 31 31 ("11111111")
text:30 30 30 30 30 30 30 30 ("00000000")
des: f4 7b b4 62 73 b1 5e b5
組三:key :"00000000"
text:"11111111"
des: 65 5e a6 28 cf 62 58 5f
組四:key:「abcdefgh"
text: "12345678"
des: 21 c6 0d a5 34 24 8b ce
後感:我在最後給出四組校驗的結果,是因為網上有人反應,而我自己也發現,不同網頁給出的結果或者不同小工具運算出來的結果不一樣,這對於程式設計師是很鬱悶的。因為需要校驗。
我使用了c而不是c++,對於演算法,沒有什麼物件的概念,而且c的通用性比c++好,可以直接用在c++中,也可以包裝一下成為c++。
des演算法很折騰,換來換去的,然則,des演算法卻並不安全,容易破解。仔細想想,有兩群很無聊的人,一群人努力地搗騰進行加密,一群人費盡心思進行破解,搞得加密演算法越來越複雜。由於des的不安全性,它只是ntlm中的一環,實現ntlm還有漫漫長路。
實現PROXY穿越(3) DES演算法之一
最近忙,事比較多,活多了,還要降薪,唉。沒什麼時間看書,將以前的一些技術blog也移到這裡。ntlm在去年年底和今年年初研究過一陣子,寫了總結和 例子程式。裡面涉及很多演算法,在網上查了很久。下面是以前的部落格 最近想實現乙個通過proxy穿越的網路程式設計,將相關的內容進行一下彙總。很多東西來 自...
java實現DES演算法
public static void main string args catch transformerexception e system.out.println time system.nanotime start 1000 1000 public desdatatransformer str...
C 實現DES加密 演算法
我的第一篇部落格就是 c語言實現des加密 今天重寫的時候發現好像 傳錯了,有些尷尬,其中有各種奇怪的問題 問題1.好多表,包括s盒之類的寫成char型別了,應該寫int型別才對 問題2.好多變數沒宣告就用了 問題3.為啥我當時要寫這麼多static?問題4.沒標頭檔案,全擠在cpp裡面了 更新修復...