DES演算法的c語言實現

2021-07-22 23:58:20 字數 738 閱讀 3750

網上找了一部分**稍微修改了下就可以使用了。已上傳github

原理:

des演算法把64位的明文輸入塊變為64位的密文輸出塊,它所使用的金鑰也是64位(實際用到了56位,第8、16、24、32、40、48、56、64位是校驗位, 使得每個金鑰都有奇數個1),其演算法主要分為兩步:

1)初始置換

其功能是把輸入的64位資料塊按位重新組合,並把輸出分為l0、r0兩部分,每部分各長32位,其置換規則為將輸入的第58位換到第一位,第50位換到第2位……依此類推,最後一位是原來的第7位。l0、r0則是換位輸出後的兩部分,l0是輸出的左32位,r0是右32位,例:設定換前的輸入值為d1d2d3……d64,則經過初始置換後的結果為:l0=d58d50……d8;r0=d57d49……d7。

其置換規則見下表:

58,50,42,34,26,18,10,2,60,52,44,36,28,20,12,4,

62,54,46,38,30,22,14,6,64,56,48,40,32,24,16,8,

57,49,41,33,25,17,9,1,59,51,43,35,27,19,11,3,

61,53,45,37,29,21,13,5,63,55,47,39,31,23,15,7,

2)逆置換

經過16次迭代運算後,得到l16、r16,將此作為輸入,進行逆置換,逆置換正好是初始置換的逆運算,由此即得到密文輸出。

此演算法是對稱加密演算法體系中的代表,在計算機網路系統中廣泛使用.

DES加密演算法的C語言實現

include des version 0.4 created by source at 2007.3 competence p4 3.0g 512m 3000000 times encryption with created subkeys 26.784 seconds about 0.85m s...

c語言實現DES演算法的金鑰生成演算法

直接上源 要求是輸入是金鑰是十六位數,字母要大寫 include int main 置換陣列 int change2 28 int change11 48 int yiwei 16 for i 0 i 16 i 輸入金鑰 for i 0 i 16 i 十六進製制轉換為01字串 if key i 1 ...

Linux下c語言實現DES和3DES演算法

一 des演算法理論 請朋友們自己去學習,我的 也是依據這裡的理論寫的。二 實現環境及檔案 a 環境 redhat linux c b 實現檔案 des.h des.c makefile 三 1 des.h檔案 ifndef des h define des h static int pc 1 ta...