實現PROXY穿越(5) DES演算法之三

2021-05-10 20:43:35 字數 1579 閱讀 8669

最近忙,事比較多,活多了,還要降薪,唉。沒什麼時間看書,將以前的一些技術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裡面了 更新修復...