基於C語言的DES加密演算法的實現要怎麼寫啊

2021-07-12 17:39:52 字數 1592 閱讀 4926

1樓:匿名使用者

首先c語言要熟悉,然後去圖書館借一本加密解密的書,要裡面有c語言des實現**的(這種書是有的,我看到過)。**先對加密解密的歷史及發展現狀進行介紹,然後著重對des加密的發展歷史及原理進行闡述(以上內容要多借幾本相關書綜合一下用自己的語言表達出來)。然後對des的演算法寫個程式(可以利用書裡面的程式),然後執行結果截幾張圖下來。

最後總結一下,**就可以了。

2樓:匿名使用者

我曾經用c++實現過,可以加密解密檔案。在這給你一些提示,希望對你有所幫助吧。以後中途遇到什麼難題也可以發訊息給我,只要我懂的一定會告訴你!

簡單來說,des演算法當中不外乎兩種操作:移位和置換,只要把這兩個難題解決了,其餘都不成問題。因為涉及到位的操作,我用標準模板庫中的bitset類。

用這個類可以方便的按位操作。在此我舉一個初始置換(ip)的例子,首先定義一個置換表:

const unsigned short ip[64]=;

這個表你應該很熟悉了吧^_^

然後定義函式:

int initpermutation(bitset<64> &bit64)

return 0;

}呼叫這個函式,傳入一個bitset<64>型別的值,通過這個函式就得到初始置換之後的值了。最關鍵的一句是bit64[i]=temp[ip[i]],des演算法當中所有的置換都是這樣實現的。

然後接著設計以下函式:

bitset<48> extpermutation(bitset<32> bit32);//32位到48位擴充套件置換

int permutation(bitset<32> &bit32);//32位置換

void leftshift(bitset<28> &bit28);//迴圈左移

bitset<56> keypc_1(bitset<64> bit64);//置換選擇1:64位金鑰置換成56位

bitset<48> keypc_2(bitset<28> c, bitset<28> d);//置換選擇2:56位金鑰置換成48位

int getkeys(bitset<64> sourcekey, bitset<48> keys[16]);//得到16組48位的子金鑰;

unsigned short c6to4(bitset<6> bit6, const unsigned short s[4][16]);

bitset<32> sboxpc(bitset<48> bit48);//s盒選擇置換

bitset<32> f(bitset<32> right, bitset<48> key); //f函式

設計完這些函式,將他們組合起來就是「一輪迭代」,然後用一個大迴圈,進行16輪迭代,最後進行一次逆初始置換便大功告成!

我就是這樣完成的。我用的是c++,而且用了模板庫中的bitset,如果你用純粹c的話就要麻煩的多了,要用到位與、位或、左移位、右移位等較底層的操作。

就說這麼多,具體實現靠自己琢磨了!

如何用c語言程式設計實現des加密演算法?

3樓:匿名使用者

求c具體的3des雙倍加密演算法跪求

using system using system.collections.generic using system.linq using system.text using system.io using system.security.cryptography namespace rare.ca...

著名的可逆的加密演算法有哪些,常用的對稱加密演算法有哪些?

1,des data encryption standard 對稱演算法,資料加密標準,速度較快,適用於加密大量資料的場合。2,3des triple des 是基於des的對稱演算法,對一塊資料用三個不同的金鑰進行三次加密,強度更高。3,rc2和rc4 對稱演算法,用變長金鑰對大量資料進行加密,比...

c語言的演算法作用及表示方法,C語言的演算法作用及表示方法

c語言的演算法copy主要就是把人類bai如何解決問題的方法和思路用某 du種形式表zhi示出來。表示dao方法有幾種,比如自然語言表示 流程圖表示 n s流程圖表示 偽 表示。各有各好處,一般常用的是流程圖和n s流程圖兩種表示方法 他的表達方式是 語句 函式。演算法的作用是用來解決一些問題。好的...