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語言設計移位加密演算法,用C語言設計乙個移位加密演算法
很簡單的,直接讀取字串,然後放進字串陣列裡,然後根據金鑰的數字i 得到i的位數,除以相應的1000,100,10等,最後到1,得到金鑰的各個位上的數,然後將其也放進乙個陣列裡,然後,對第二個金鑰的陣列讀出來直接操作第乙個明文的陣列,再將操作的陣列放進另乙個陣列中即可。這種加密方式首先要確定明文的編碼...
常用的加密演算法有哪些,常用的對稱加密演算法有哪些?
失戀海洋 對稱加密演算法 祕金鑰匙加密 和非對稱加密演算法 公開金鑰加密 對稱加密演算法用來對敏感資料等資訊進行加密,常用的演算法包括 des data encryption standard 資料加密標準,速度較快,適用於加密大量資料的場合。3des triple des 是基於des,對一塊資料...
c語言中sin 函式用的什麼演算法
這個是庫函式吧 只有有說明就可以用了,你試一下,不用包含 math.h直接寫一個宣告,double cdecl sin double x 就可以用了 庫函式沒有原始檔可以看的,只有二進位制可執行 連線時,加到你的程式中。這是編譯器提供的。補充一下 樓主問的是 sin 這個函式,cpu是如何實現的cp...