常用加解密方法匯總 工具 (附源碼)


 

一 開篇

    加密與解密這兩個操作自打計算機問世已來,就不斷的相掐中,各種舊的加密算法不斷被破解,又不斷涌現出新的加密算法,理論上說沒有哪種算法是絕安全無法破解的,只是破解所花的時間成本幾乎可以讓人認為不具有可操作性,從而認為是相對安全的。

  那在實際的工作中,我們也是經常需要用到加密與解密的,比如需要調用其它平台或者其它系統的接口時,相互的數據傳輸為了安全起見,通常是會要求將數據加密處理的。經過幾十年的發展,已經很多的加密算法問世。

 

二 加密算法 分類 

 

   對稱加密
  采用單鑰密碼系統的加密方法,同一個密鑰可以同時用作信息的加密和解密,這種加密方法稱為對稱加密,也稱為單密鑰加密。
  DES、3DES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、SKIPJACK、AES
 
   非對稱加密
  對稱加密算法在加密和解密時使用的是同一個秘鑰;而非對稱加密算法需要兩個密鑰來進行加密和解密,這兩個秘鑰是公開密鑰(public key,簡稱公鑰)和私有密鑰(private key,簡稱私鑰)
  RSA、DSA ,Elgamal、背包算法、Rabin、D-H、ECC(橢圓曲線加密算法)
 
   哈希 (摘要算法)
  Hash,一般翻譯做“散列”,也有直接音譯為“哈希”的,就是把任意長度的輸入(又叫做預映射, pre-image),通過散列算法,變換成固定長度的輸出,該輸出就是散列值。這種轉換是一種壓縮映射,也就是,散列值的空間通常遠小於輸入的空間,不同的輸入可能  會散列成相同的輸出,所以不可能從散列值來唯一的確定輸入值。簡單的說就是一種將任意長度的消息壓縮到某一固定長度的消息摘要的函數。
  MD4  MD5  SHA-1
 
     加密算法大致就分為這三類,具體每一分類下的算法介紹大家可以百度了解,我就不貼了
 
 

三  工具簡介

   
     之所以要寫這個工具,也是因為項目中需要和其它平台去對接數據,為了安全便將數據進行了加密,采用的是對稱加密中的 AES 加密算法。
  在對接過程中還出了點小麻煩,對方加密時是用的Java加密 而我們則是用C# 解密,Mode是ECB  Padding 是PKCS7,但是卻怎么也解不開,最終發現在Java里是可以取到將密鑰轉指定長度后的字符串,而C#里是沒有提供這個方法的,所解決方案就是 用Java把密鑰生成指定長度后的字符串 直接用做C#的密鑰 ,這才能正常的加密與解密。
 
 
  基本上常用的加密算都包含了, 密鑰文本框后面的兩個復選框 Base64 與16進制,之所以要加這兩個選項,是因為如果直接將加密后返回的byte數據轉成字符是會出現亂碼的情況的。
 另外 DES DES3  AES 這三種加密,密鑰都是有長度限制的 具體長度自己試過了就知道啦!
  注:某些加密算是區分運算模式的(Mode) CBC, CFB, ECB, OFB, CTS
 以及填充械(Padding)  None, PKCS7, Zeros, ANSIX923, ISO10126
 在雙方約定加密時這些都是需要統一制定的
 
 好了 先上一張加密工具的圖
 
 

四  總結

  
  這個工具只是方便工作,也是自己對加密知識的一個梳理與總結, 如果您覺得這個工具對您也有幫助,那就大方的拿去吧 只要隨手幫我點個贊,為我的付出給點回報!在下必當感激不盡,
如果您覺得文章或工具有什么不對或者不好的地方,歡迎在評論區留下您的建議! 
  
 
 
 源碼在這里  快點我!快點我!
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM