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

時間 2021-07-12 17:39:29

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樓:匿名使用者

對稱加密演算法和非對稱加密演算法的區別是什麼

一 對稱加密 symmetric cryptography 對稱加密是最快速 最簡單的一種加密方式,加密 encryption 與解密 decryption 用的是同樣的金鑰 secret key 這種方法在密碼學中叫做對稱加密演算法。對稱加密有很多種演算法,由於它效率很高,所以被廣泛使用在很多加密...

最常用的密碼有哪些,常用的加密演算法有哪些?

愛演戲的男孩 1月17日安全公司keeper在對1000萬個洩露的密碼進行分析後,得出了今年最常用的密碼。排名第一的非常好猜,因為它幾乎每年都會當選,這個密碼就是123456,人類選擇密碼的能力實在是遭透了。在這1000萬個洩露的密碼中,有17 的使用者都選擇了123456最為自己的密碼。排名第二的...

c語言的簡單加密,C語言簡單加密問題

include include int main 那麼再讀入一個字元,賦給陣列裡的元素。也就是說,每兩個字元a i n 能讀入第二個字元。如果讀入奇數個字元,則無法結束程式。i 0 dowhile a i n 修改如下,執行ok include int main printf n include i...