關於加密解密備忘

2021-08-23 11:21:20 字數 1166 閱讀 2609

在資料傳輸中,同一定遇到unicode一樣,你一定會遇到加密問題.下面說說我的理解.

一.對稱演算法,非對稱演算法.

有加密就有解密,解密和解密都要用到乙個或多個密碼,俗稱金鑰.金鑰一致的就是對稱演算法,而不一致的就是非對稱演算法.非對稱如同你在乙個門上放了兩把鎖一樣,鑰匙不同,也可以解鎖.對稱,就是一把鑰匙開一把鎖(當然例子也不太準確).

二.常用的對稱演算法

3des,tea等都是常用的演算法.對稱演算法速度都很快.而tea小巧高效,實現容易.tea是tiny encrypt arithmetic的縮寫.顧名思義就是一種比較簡單的小型加密演算法.它用乙個16位元組的金鑰去加密乙個8位元組的明文.得到乙個8位元組的密文.也可以反向從密文解密出明文,網路上有很多實現**.據說,qq聊天資訊就使用了tea.

三.rsa非對稱演算法.

找到乙個非對稱演算法太不容易了,rsa公開金鑰密碼系統是由r.rivest,a.shamir,l.adleman提出的,不僅僅可用於資料的加密,也可用於數字簽名,其演算法如下:

1、取兩個相近的大素數p、q;

2、計算n=p*q,z=(p-1)*(q-1);

3、任取乙個與z互素的整數e;

4、計算滿足e*d=1 mod z 的整數d;

5、將明文m分成字元塊s加密,每個塊s小於n。現設明文m小於n,加密後形成密文c。

加密、解密過程如下:   

加密:c=m^e mod n

解密:m=c^d mod n

6、(n,e)和(n,d)分別稱為「公開金鑰」和「秘密金鑰」。根據euler定理可得:

m=c^d mod n=(m^e mod n)^d mod n=m

實際上,公開金鑰和秘密金鑰是相對的.你可以公開任何乙個,而秘密另外乙個.要使用rsa,關鍵是大數演算法.rsa被破解的難度就是大數運算.當然,網路上也有很多**.

rsa,des可以實用windows系統提供的wincrypt.h中的函式.microsoft cryptoapi使用了乙個金鑰庫,可以實現hash,數字簽名.具體模型可以參考msdn.

後記:通過我的使用,發現tea實現容易,rsa要通過大數演算法,而d中的大數演算法都是別人寫的,看了兩個,都不好用.只好抄別人的c**了.而microsoft cryptoapi值得研究.

附上d的大數運算**(都不好用).

也發現d2有了個大數運算的庫實現.沒有測試,貌似編譯期運算.

關於加密解密設計思路

當你發post,get請求,而這個請求帶有密碼,使用者名稱等資訊時,往往要對其加密,而接受請求的一方再對其解密。如果是我們做查詢功能是,如果查詢引數帶有身份證資訊,我們對身份證,用規定好的金鑰進行加密解密,一般也就達到想要的效果,因為我擷取這段密文,並不明白其明文是什麼意思。但是如果模擬登入,向其傳...

des vue 加密解密 DES加密 解密

外掛程式描述 des data encryption standard 是發明最早的最廣泛使用的分組對稱加密演算法。des演算法簡介 des data encryption standard 是發明最早的最廣泛使用的分組對稱加密演算法。des演算法的入口引數有三個 key data mode。其中k...

檔案加密解密 URl引數加密解密

sliverlight 加密解密 public static class encryption endregion region silverlight密碼解密 解密資料 加密後的字串 加密前的字串 public static string decrypt string input endregio...