DES加密演算法中的IP與IP逆置換

2021-04-13 21:47:31 字數 1614 閱讀 2574

今天終於把des加密演算法中的ip置換和其逆置換搞定了,兩個演算法是一樣的,只是置換表的不同而已.測試通過^_^.

在此記錄下,供以後自己參考或同樣喜歡c程式設計的人參考.

以前c程式寫的少,今後會一直寫下去,寫完des再嘗試一下其它的加密演算法

#include

#include

#include

typedef unsigned int myint32;

typedef struct block

block;

static void _ip(block *p)

;myint32 i, ip=

;for(i = 0;i < 64;i++)

else

//printf("3 %x -- %x /n",plntxt.left32,plntxt.right32);      

}p->left32 = plntxt.left32;

p->right32 = plntxt.right32;

printf("3*** ******%x -- %x /n",p->left32,p->right32);

return ;    };

static void _nip(block *p)//逆初始置換

;myint32 i, nip=

;for(i = 0;i < 64;i++)

else

} p->left32 = plntxt.left32;

p->right32 = plntxt.right32;

printf("3*** ******%x -- %x /n",p->left32,p->right32);  

return ;   

};int main()

;printf("1*  %x -- %x /n",plntx.left32,plntx.right32);

_ip(&plntx);

printf(" %x -- %x /n",plntx.left32,plntx.right32);

_nip(&plntx);

printf("the end %x -- %x",plntx.left32,plntx.right32);

system("pause");

return 0;   }

總結一下,裡面出現過的問題就是指標的操作: 把main函式裡宣告的變數位址傳遞進子函式裡操作,在子函式中宣告臨時變數,在子函式裡對傳遞進來的引數操作,最後再把臨時變數的值賦給傳遞進來的引數,就改變了main函式裡宣告的變數的值. 如ip置換演算法中正確的方法 : p->left32 = plntxt.left32;

p->right32 = plntxt.right32;

起初寫的p = &plntxt,這種寫法在main函式裡面測試,結果仍舊是初始化的那個值,沒有被更改.

原因是: 當main函式呼叫子函式ip時,把plntx 的位址傳遞進子函式,在子函式裡操作plntx位址空間裡儲存的內容,最終for迴圈執行的果儲存在子函式臨時變數plntxt 裡面,p = &plntxt 這裡作用域只是子函式裡面,並沒有把其真實的值傳遞給子函式,當子函式執行結束後,要釋放其內部變數的記憶體空間,如果此時在main函式裡測試plntx 的值,結果會仍舊是最初初始化的那個值.

DES加密演算法與python實現

全稱 資料加密標準 data encryption standard 屬於對稱加密演算法。des是乙個分組加密演算法,典型的des以64位為分組對資料加密,加密和解密用的是同乙個演算法。它的金鑰長度是56位 因為每個第8 位都用作奇偶校驗 金鑰可以是任意的56位的數,而且可以任意時候改變。pytho...

DES 3DES 加密演算法的呼叫

初始向量 當加密第乙個明文分組時,由於不存在 前乙個密文分組 因此需要事先準備乙個長度為乙個分組的位元序列來代替 前乙個密文分組 這個位元序列稱為初始化向量 initializationvector 通常縮寫為 iv。填充方式 當明文長度不為分組長度的整數倍時,需要在最後乙個分組中填充一些資料使其湊...

OpenSSL中對稱加密演算法DES常用函式使用舉例

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!主要包括3個檔案 1.cryptotest.h ifndef cryptotest h define cryptotest h include using namespace std typedef enum crypto mode string ...