整體設計思想:
不管是加密還是解密,根本思路就是對原始檔中的內容根據某種演算法進行變換,用變換後的內容覆蓋原來的內容,從而達到加解密的目的。在這個程式中按照要求對檔案加解密用的是
3des
演算法,具體的
des演算法在課本上有詳細的描述。
des綜合運用了置換、代替、代數等多種密碼技術,它設計精巧、實現容易、使用方便,是適應計算機環境的近代傳統密碼的乙個典範。它有以下特點
1.des
是一種分組密碼。明文、密文、金鑰的分組長度都是
64位。
2.des
是一種面向二進位制的密碼演算法,因而能夠加解密任何形式的計算機資料。
3.des
是對合運算,因而加密和解密公用一演算法,使工程實現的工作量減半。
現在只對它運用到對檔案加解密這個問題上涉及到的問題做簡單的分析
1. 大家知道
,des
的明文長度是
64位的0或
1,是個二進位制數字。而在計算機上用程式直觀的實現這
64位的處理,最好將0或
1分別作為乙個位元組來處理,在
c語言裡用
char
資料型別。這樣程式實現起來也比較簡單。
2.對檔案進行加解密的時候,考慮到
des演算法中明文的長度是
8個位元組,所以把檔案劃分為若干塊,每塊大小為
8位元組,加解密的時候每次讀出
8個位元組,因為前面已經說過0或
1是按照乙個位元組來處理的,所以先要將這
8個位元組轉化為
64個位元組,把原來的每乙個位都用乙個位元組來儲存。這樣就可以呼叫已經設計好的
3des
演算法,當然結果也是
64位元組但往檔案裡寫的是
8個位元組,所以還需要將這
64個位元組轉化成
8個位元組,然後寫入檔案覆蓋原始檔的內容。
3 當然由於檔案長度不一定是
8的倍數,所以會出現短塊,就得考慮短塊處理的問題。
該程式用的是密文挪用技術。因為分組密碼一次只能對乙個固定長度的明文(密文)塊進行加(解)密,而對長度小於分組密碼長度的明文(密文)塊不能正確地加(解)密,就存在短塊怎麼處理的問題。該軟體採用了密文挪用技術,這種方式不會引起資料的擴充套件,缺點是控制上有點複雜。
4 同時,考慮到計算機系統中由於資料冗餘和資料結構而使資料具有某種固有模式,還採用了密文反饋鏈結方式。這種連線方式中,明文不參加鏈結,只讓密文參與鏈結。這樣使得在解密的時候錯誤傳播是有界的。(該程式中已經設定初始向量為0)。
5.考慮到
des存在弱金鑰,該程式採用的
3des
。3des採用2
金鑰或3
金鑰,完全能夠抵抗窮舉攻擊。
3des
的底層演算法與
des相同而且不存在弱金鑰。該軟體使用的是2金鑰
3des
技術。
3des演算法加密
實現的原理 public class encryption 執行3des加密 param secretkey 秘鑰 param datastring 明文 return base64編碼文字 public static string encryptdes string secretkey,strin...
Des與3Des加密解密
des和3des演算法 public class des b ret.tostring return ret.tostring 3des加密 金鑰不能每8位重複,例如 123456781234567812345678,如果這樣則演算法退化為des,c 會檢測,不能使用 明文 金鑰 public st...
3DES加密演算法
des是乙個經典的對稱加密演算法,但也缺陷明顯,即56位的金鑰安全性不足,已被證實可以在短時間內破解。為解決此問題,出現了3des,也稱triple des,3des為des向aes過渡的加密演算法,它使用3條56位的金鑰對資料進行三次加密。為了相容普通的des,3des並沒有直接使用 加密 加密 ...