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...