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流程圖兩種表示方法 他的表達方式是 語句 函式。演算法的作用是用來解決一些問題。好的...